Joomla 3 получает родительский заголовок активного пункта меню

Я нашел в этой теме: получить заголовок активного элемента меню, как получить заголовок активного пункта меню:

$menu = &Jsite::getMenu();
$menuname = $menu->getActive()->title;

но как я могу получить его название пункта родительского меню?


person web-tiki    schedule 28.08.2013    source источник


Ответы (3)


Это должно работать

$menu = JFactory::getApplication()->getMenu();
$parent = $menu->getItem( $menu->getActive()->parent_id );
$parentname = $parent->title;
$parentlink = JRoute::_( $parent->link . '&Itemid=' . $parent->id );
person Kaerber    schedule 10.11.2013
comment
Как я могу получить ссылку на родительское меню? - person Ignacio Correia; 19.12.2013
comment
Мне нужно было это для заголовка подменю, и мне пришлось добавить еще две переменные: $menulevel = $menu->getActive()->level; $activename= $menu->getActive()->title; Затем я добавил заголовок следующим образом: <?php echo ($menulevel == 1)?$activename:$parentname; ?> - person Ralf; 14.08.2015

Я давно не работал с Joomla, но все же попробуйте:

$menu     = JSite::getMenu();
$active   = $menu->getActive();
$parent   = $menu->getItem($active->parent);

Затем вы можете использовать $parent как любой другой пункт меню:

echo $parent->title;
person AlexP    schedule 28.08.2013
comment
Только что попробовал, но это не работает, ничего не извлекает. спасибо за попытку - person web-tiki; 29.08.2013
comment
Как я могу получить ссылку на родительское меню? - person Ignacio Correia; 19.12.2013

Я только что использовал это:

$menu = &JSite::getMenu();
$active = $menu->getActive();
$menuname = $active->title;
$parentId = $active->tree[0];
$parentName = $menu->getItem($parentId)->title;
$parentlink = $menu->getItem($parentId)->alias;
echo "<h1><a href=\"$parentlink\">".$parentName."</a></h1>";

Нашел большую часть этого на форуме Joomla и добавил часть псевдонима, о которой я догадался ... Это работает с URL-адресами SEF и перезаписью URL-адресов. Во всяком случае, заглавная строка:

&JSite::getMenu()->getItem(&JSite::getMenu()->getActive()->tree[0])->title;

... что должно совпадать с тем, что перечислил AlexP, я не проверял, что это точно то же самое.

person Ralf    schedule 06.07.2014
comment
getMenu() не является статическим методом. Код будет работать, но будет выдавать предупреждения. Правильный способ сделать это в Joomla 3 без получения предупреждений PHP выглядит следующим образом: $menu = JFactory::getApplication()->getMenu(); - person Nick; 03.06.2016