it-swarm.dev

Il menu personalizzato ottiene il titolo della voce principale del menu attivo

Posso ottenere il titolo del menu attivo usando

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

Ma come posso accedere al titolo principale?

7
web-tiki

Prova questo codice:

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

Se hai bisogno del link

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

Il metodo getActive restituisce un oggetto con le proprietà del menu attivo incluso parent_id. La classe JMenu ha un metodo getItem ($ id), dove $ id è un ID menu. Questo metodo restituisce lo stesso tipo di oggetto che getActive. Quindi, puoi fare qualcosa del genere:

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

Dal momento che è possibile ottenere il menu attivo, è possibile ottenere il resto ottenendo il tree. Questo è utile per attraversare l'elenco degli oggetti, non solo il genitore!

Per capire meglio, sto dividendo la risposta in parti:

1. Creare una variabile per il menu attivo (per semplicità e portabilità):

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

2. Seleziona il menu precedente/principale ottenendo l'elemento precedente nella struttura:

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

NOTA: il tree è un array e inizia con zero, ecco perché sto sottraendo da 2.

3. Finalmente ottieni il titolo del menu:

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

Tieni presente che devi anche aggiungere alcuni controlli per vedere se c'è un menu attivo e/o altri controlli di errore.

1
jackJoe