ti-enxame.com

Menu personalizado obtém o título do item pai do menu ativo

Posso obter o título do menu ativo usando

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

Mas como posso acessar o título principal?

7
web-tiki

Tente este código:

$menu = JFactory::getApplication()->getMenu();
$parent = $menu->getItem( $menu->getActive()->parent_id );
$parentname = $parent->title

Se você precisar do link

$parentlink = JRoute::_( $parent->link . '&Itemid=' . $parent->id );
10
me7hos

O método getActive retorna um objeto com as propriedades do menu ativo, incluindo o parent_id. A classe JMenu possui um método getItem ($ id), em que $ id é um ID de menu. Este método retorna o mesmo tipo de objeto que getActive. Então, você pode fazer algo assim:

$menu = JFactory::getApplication()->getMenu();
$parent_id = $menu->getActive()->parent_id;
$parent_title = $menu->getItem($parent_id)->title;
1
csbenjamin

Como você pode obter o menu ativo, você pode obter o restante obtendo o tree. Isso é útil para percorrer a lista de itens, não apenas para os pais!

Para que você entenda melhor, estou dividindo a resposta em partes:

1. Crie uma variável para o menu ativo (por simplicidade e portabilidade):

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

2. Escolha o menu anterior/principal, obtendo o item anterior na árvore:

$parent_item_id = $active->tree[count($active->tree) - 2];

NOTA: o tree é uma matriz e começa com zero, é por isso que estou subtraindo por 2.

3. Finalmente, obtenha o título do menu:

$menu->getItem($parent_item_id)->title

Lembre-se de que você também precisa adicionar algumas verificações para ver se há um menu ativo e/ou outras verificações de erro.

1
jackJoe