web-dev-qa-db-ja.com

メニュー項目フィールドタイプから完全なリンクを取得する

Joomla用に独自のスライドショーコンポーネントとモジュールを開発しています。コンポーネントは、キャプションやリンクなどとともにスライドを選択するために使用されます。モジュールはスライドを表示します。

コンポーネントでは、各スライドに対して、各スライドにリンクを追加するオプションを有効にしました。私が使用したフィールドタイプはメニュー項目フィールドタイプです http://docs.joomla.org/Menuitem_form_field_type

これは、その特定のスライドのデータベースにメニュー項目IDを追加するようです。

私の質問です。このメニュー項目IDを取得して、モジュールでそれを使用して完全なメニュー項目リンクを取得するにはどうすればよいですか?おそらくデータベースを検索して適切なメニュー項目を見つけ、適切なリンクを見つける必要があることは理解していますが、どこから始めればよいかよくわかりません。

誰かが私を正しい方向に向けることができれば私はそれを感謝します。

ありがとう:)

7
DesignSubway

私がすでに知っていると思うIDを取得するには、以下を使用できます。

$itemid = $params->get('field_name');

IDに基づいてURLを取得するには、次のことを試してください。

$itemid = $params->get('field_name'); //change the field name to whatever you have 

$app = JFactory::getApplication();
$menu = $app->getMenu();
$link = $menu->getItem($itemid)->link;

echo JRoute::_($link);

これにより、SEF URLがエコーされます。標準のURLが必要な場合は、単にecho $link;

お役に立てれば

5
Lodder

それは少ないコーディングで少し速く行うことができます:

JRoute::_('index.php?Itemid='.$itemid);

これにより、選択したメニュー項目の相対URLが返されます。

1
Artur Stępień