Je peux obtenir le titre du menu actif en utilisant
$menu = &Jsite::getMenu();
$menuname = $menu->getActive()->title;
Mais comment puis-je accéder à son titre parent?
Essayez ce code:
$menu = JFactory::getApplication()->getMenu();
$parent = $menu->getItem( $menu->getActive()->parent_id );
$parentname = $parent->title
Si vous avez besoin du lien
$parentlink = JRoute::_( $parent->link . '&Itemid=' . $parent->id );
La méthode getActive renvoie un objet avec les propriétés du menu actif, y compris le parent_id. La classe JMenu a une méthode getItem ($ id), où $ id est un id de menu. Cette méthode retourne le même type d'objet que getActive. Donc, vous pouvez faire quelque chose comme ça:
$menu = JFactory::getApplication()->getMenu();
$parent_id = $menu->getActive()->parent_id;
$parent_title = $menu->getItem($parent_id)->title;
Puisque vous pouvez obtenir le menu actif, vous pouvez obtenir le reste en récupérant le tree
. Ceci est utile pour parcourir la liste des articles, pas seulement le parent!
Pour que vous compreniez mieux, je divise la réponse en plusieurs parties:
1. Créez une variable pour le menu actif (pour la simplicité et la portabilité):
$menu = &JSite::getMenu();
$active = $menu->getActive();
2. Choisissez le menu précédent/parent en récupérant l’élément précédent dans l’arborescence:
$parent_item_id = $active->tree[count($active->tree) - 2];
NOTE: le tree
est un tableau, et commence par zéro, c'est pourquoi je soustrais par 2.
3. Enfin, obtenez le titre du menu:
$menu->getItem($parent_item_id)->title
Notez que vous devez également ajouter des contrôles pour voir s’il existe un menu actif et/ou d’autres contrôles d’erreur.