Antworten:
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:
$menu = JFactory::getApplication()->getMenu();
$parent_id = $menu->getActive()->parent_id;
$parent_title = $menu->getItem($parent_id)->title;
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):
$menu = &JSite::getMenu();
$active = $menu->getActive();
2. Wählen Sie das vorherige / übergeordnete Menü aus, indem Sie das vorherige Element in der Baumstruktur abrufen:
$parent_item_id = $active->tree[count($active->tree) - 2];
HINWEIS: Das treeist ein Array und beginnt mit Null. Deshalb subtrahiere ich um 2.
3. Holen Sie sich schließlich den Menütitel:
$menu->getItem($parent_item_id)->title
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.
$menu = &JSite::getMenu();, da es sich nicht um eine statische Funktion handelt. Der richtige Weg ist, den von @ me7hos angegebenen Code zu verwenden.