it-swarm-tr.com

Özel menü etkin menünün üst öğesinin başlığını alır

Aktif menünün başlığını kullanarak

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

Ancak ana başlığına nasıl erişebilirim?

7
web-tiki

Bu kodu deneyin:

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

Eğer bağlantıya ihtiyacınız varsa

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

GetActive yöntemi, parent_id dahil olmak üzere etkin menü özelliklerine sahip bir nesne döndürür. JMenu sınıfının getItem ($ id) yöntemi vardır; burada $ id bir menü kimliğidir. Bu yöntem getActive ile aynı türdeki nesneleri döndürür. Yani, böyle bir şey yapabilirsiniz:

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

Etkin menüyü alabildiğiniz için, geri kalanını tree ile alabilirsiniz. Bu, yalnızca ebeveyn değil, öğe listesini dolaşmak için kullanışlıdır!

Daha iyi anlayabilmen için cevabı parçalara ayırıyorum:

1. Etkin menü için bir değişken oluşturun (basitlik ve taşınabilirlik için):

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

2. Ağaçtaki bir önceki öğeyi alarak önceki/üst menüyü seçin:

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

NOT:tree bir dizidir ve sıfır ile başlar, bu yüzden 2 ile çıkarıyorum.

3. Son olarak menü başlığını edinin:

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

Etkin bir menü olup olmadığını ve/veya başka hata kontrollerini görmek için bazı kontroller eklemeniz gerektiğini unutmayın.

1
jackJoe