it-swarm-id.com

Menu kustom mendapatkan judul item induk menu aktif

Saya bisa mendapatkan judul menu aktif menggunakan

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

Tetapi bagaimana saya bisa mengakses judul induknya?

7
web-tiki

Coba kode ini:

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

Jika Anda memerlukan tautan

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

Metode getActive mengembalikan objek dengan properti menu aktif termasuk parent_id. Kelas JMenu memiliki metode getItem ($ id), di mana $ id adalah id menu. Metode ini mengembalikan tipe objek yang sama yang getActive. Jadi, Anda dapat melakukan sesuatu seperti ini:

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

Karena Anda bisa mendapatkan menu aktif, Anda bisa mendapatkan sisanya dengan mendapatkan tree. Ini berguna untuk melintasi daftar item, bukan hanya induknya!

Agar Anda mengerti lebih baik, saya membagi jawaban di beberapa bagian:

1. Buat variabel untuk menu aktif (untuk kesederhanaan dan portabilitas):

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

2. Pilih menu sebelumnya/induk dengan memasukkan item sebelumnya di bagan:

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

CATATAN:tree adalah array, dan dimulai dengan nol, itu sebabnya saya mengurangi 2.

3. Akhirnya mendapatkan judul menu:

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

Harap diingat bahwa Anda juga perlu menambahkan beberapa cek untuk melihat apakah ada menu yang aktif, dan/atau pemeriksaan kesalahan lainnya.

1
jackJoe