回答:
このコードを試してください:
$menu = JFactory::getApplication()->getMenu();
$parent = $menu->getItem( $menu->getActive()->parent_id );
$parentname = $parent->title
リンクが必要な場合
$parentlink = JRoute::_( $parent->link . '&Itemid=' . $parent->id );
getActiveメソッドは、parent_idを含むアクティブなメニュープロパティを持つオブジェクトを返します。JMenuクラスにはメソッドgetItem($ id)があり、$ idはメニューIDです。このメソッドは、getActiveと同じタイプのオブジェクトを返します。だから、あなたはこのようなことをすることができます:
$menu = JFactory::getApplication()->getMenu();
$parent_id = $menu->getActive()->parent_id;
$parent_title = $menu->getItem($parent_id)->title;
アクティブなメニューを取得できるため、を取得することで残りを取得できますtree
。これは、親だけでなく、アイテムリストをトラバースする場合にも役立ちます。
あなたがよりよく理解できるように、私は答えをいくつかに分けています:
1.アクティブなメニューの変数を作成します(簡素化と移植性のため):
$menu = &JSite::getMenu();
$active = $menu->getActive();
2.ツリーの前のアイテムを取得して、前のメニューまたは親メニューを選択します。
$parent_item_id = $active->tree[count($active->tree) - 2];
注:これtree
は配列であり、ゼロから始まります。そのため、2を減算しています。
3.最後にメニュータイトルを取得します。
$menu->getItem($parent_item_id)->title
アクティブなメニューがあるかどうかを確認するためのチェックやその他のエラーチェックを追加する必要があることにも注意してください。
$menu = &JSite::getMenu();
は静的関数ではないため、使用しないでください。正しい方法は、@ me7hosで指定されたコードを使用することです。