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


7

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

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

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

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

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

ありがとう:)

回答:


5

私がすでに知っていると思う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;

お役に立てれば


うわー、とてもシンプル!データベースを照会する必要があると思いました。今日はこれを試して、結果をお知らせします。
どうも

同様のニーズがありました。$ menu-> getItem($ itemid)を使用してメニュー項目を取得すると、期待されるオブジェクトが提供されますが、-> link属性は空です。エイリアスを直接使用してルーティングすることもできますが、それが適切な形式かどうかはわかりません。
lcdservices 2014

@lcdservices-Joomlaのどのバージョンですか?
Lodder

Nevermind-問題を見つけた。「テキストセパレーター」タイプのメニュー項目がいくつかあるため、リンク値がありません。このタイプのメニュー項目が誤って選択される可能性を処理するために、コードを調整する必要がありました。
lcdservices 2014

@RustyJoomla-それが役に立ててうれしい:)
Lodder

1

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

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.