Ich kann den Titel des aktiven Menüs mit abrufen
$menu = &Jsite::getMenu();
$menuname = $menu->getActive()->title;
Aber wie kann ich auf den übergeordneten Titel zugreifen?
Versuchen Sie diesen Code:
$menu = JFactory::getApplication()->getMenu();
$parent = $menu->getItem( $menu->getActive()->parent_id );
$parentname = $parent->title
Wenn Sie den Link benötigen
$parentlink = JRoute::_( $parent->link . '&Itemid=' . $parent->id );
Die Methode getActive gibt ein Objekt mit den aktiven Menüeigenschaften einschließlich der parent_id zurück. Die JMenu-Klasse verfügt über eine Methode getItem ($ id), wobei $ id eine Menü-ID ist. Diese Methode gibt denselben Objekttyp zurück wie getActive. Sie können also so etwas tun:
quelle
Da Sie das aktive Menü erhalten können, können Sie den Rest erhalten, indem Sie das erhalten
tree
. Dies ist nützlich, um die Artikelliste zu durchlaufen, nicht nur die übergeordnete!Damit Sie es besser verstehen, teile ich die Antwort in Teile auf:
1. Erstellen Sie eine Variable für das aktive Menü (der Einfachheit und Portabilität halber):
2. Wählen Sie das vorherige / übergeordnete Menü aus, indem Sie das vorherige Element in der Baumstruktur abrufen:
HINWEIS: Das
tree
ist ein Array und beginnt mit Null. Deshalb subtrahiere ich um 2.3. Holen Sie sich schließlich den Menütitel:
Beachten Sie jedoch, dass Sie auch einige Überprüfungen hinzufügen müssen, um festzustellen, ob ein aktives Menü vorhanden ist, und / oder andere Fehlerprüfungen.
quelle
$menu = &JSite::getMenu();
, da es sich nicht um eine statische Funktion handelt. Der richtige Weg ist, den von @ me7hos angegebenen Code zu verwenden.