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 tree
ist 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.