を使用してアクティブなメニューのタイトルを取得できます
$menu = &Jsite::getMenu();
$menuname = $menu->getActive()->title;
しかし、どうすれば親のタイトルにアクセスできますか?
このコードを試してください:
$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
アクティブなメニューがあるかどうかを確認するためのチェックやその他のエラーチェックを追加する必要があることにも注意してください。