Saat mendarat di halaman yang memiliki item menu yang merupakan induk dari item menu halaman lain, saya ingin dapat menampilkan daftar item menu anak-anak itu. Saya menggunakan kode berikut.
$trail = menu_get_active_trail();
menu_build_tree('main-menu', array(
'expanded' => array($trail[1]['mlid'])
));
Namun, array yang dikembalikan terlihat seperti ini (dengan banyak yang tidak perlu dihapus).
array
'49950 PKY Truck Beauty 312' =>
array
'link' => &
array
'menu_name' => string 'main-menu' (length=9)
'mlid' => string '312' (length=3)
'plid' => string '311' (length=3)
'below' =>
array
'49952 Seminars 314' =>
array
'link' => &
array
'menu_name' => string 'main-menu' (length=9)
'mlid' => string '314' (length=3)
'plid' => string '311' (length=3)
'50000 HDMA Breakfast 316' =>
array
'link' => &
array
'menu_name' => string 'main-menu' (length=9)
'mlid' => string '316' (length=3)
'plid' => string '311' (length=3)
'50000 MATS Concert 315' =>
array
'link' => &
array
'menu_name' => string 'main-menu' (length=9)
'mlid' => string '315' (length=3)
'plid' => string '311' (length=3)
Perhatikan bagaimana 314, 315, dan 316 'di bawah' 312? Mereka adalah saudara kandung dalam struktur menu saya, dan yang tampaknya diverifikasi oleh masing-masing memiliki nilai yang sama untuk plid
(311). Jelas saya bisa memperbaikinya dengan melewati array melalui fungsi lain, tapi saya tidak bisa tidak berpikir saya hanya melewatkan sesuatu.
$tree = menu_build_tree('main-menu', array( 'expanded' => array($trail[1]['mlid']) ));
drupal_render(menu_tree_output($tree))
Kemudian menggunakan CSS saya bisa menata tautan untuk menghapusul
padding, membuatnya tampak semuanya pada level yang sama. Tidak ideal, tetapi efektif. EDIT: maaf, saya tidak tahu cara mendapatkan jeda baris untuk bekerja.get_sub_menu_based_on_active_page()
dan saya siap. Saya harus pindah dari mencoba mencari tahu masalah bersarang sebagai css membuat pengguna tidak ada yang lebih bijak.Jawaban:
Hanya ingin tindak lanjut. Saya kembali ke pertanyaan ini dan menemukan yang berikut: /programming/2716787/how-to-get-all-the-menu-items-below-a-certain-parent-in-drupal yang merupakan persis apa yang saya butuhkan.
Kode, disalin dari tautan yang disebutkan di atas dan dimodifikasi agar sesuai dengan kebutuhan saya (terutama untuk menggunakan jalur saat ini untuk membangun pohon menu dari, daripada menggunakan nilai kode-keras:
sumber
current_path()
bukan$_GET['q']
.$_GET['q']
akan mengembalikan path alias, di manacurrent_path()
akan mendapatkan node / id.Ini dapat dengan mudah dilakukan dengan menggunakan modul Blok menu (dibutuhkan sekitar 5 menit untuk mengkonfigurasinya).
Yang harus Anda lakukan adalah
admin/structure/block
Tetapkan "Level awal" ke "Level 2 (Sekunder)" dan tetapkan wilayah tempat ditampilkannya di bawah "Tentukan di mana tema dan wilayah mana blok ini ditampilkan."
Tangkapan layar:
Ini adalah tampilan halaman konfigurasi
admin / struktur / blok halaman dengan blok modul Menu yang diaktifkan
Saya membuat beberapa konten "Halaman dasar" dengan modul Devel, dan memberikan beberapa tautan menu kepadanya, dan membuat hierarki menu bersarang
Ini adalah menu kedua, dengan beberapa elemen anak, Anda sudah dapat melihat "Menu utama - tingkat 2" di bilah sisi kiri, tetapi hanya elemen anak tingkat 2 yang dapat dilihat.
Sekarang masuk lebih dalam:
Saya pikir menggunakan modul Menu blok untuk tugas ini adalah salah satu solusi termudah dan tercepat.
sumber
Seperti disebutkan dalam komentar, saya akhirnya menggunakan fungsi API dan kemudian menata dengan CSS:
sumber
Ini berfungsi dengan benar untuk mendapatkan sub-menu dari halaman saat ini:
Semoga bantuan ini!
sumber
@ Chris Rockwell dan @ Mario Awad
Saya pemula di Drupal jadi sulit untuk mengerti bagi saya di mana menambahkan fungsi ini .. Saya minta maaf untuk itu. Tapi, bisakah kalian sebutkan di file mana, kita harus menambahkan fungsi ini?
Saya mencoba membuat navigasi bilah samping yang hanya akan menampilkan elemen anak di setiap halaman. Bagaimana cara membuat menu navigasi di sidebar dengan tautan navigasi berbeda yang ditampilkan di halaman berbeda?
Saya menghargai!
Terima kasih!
sumber
Saya baru saja selesai memposting fungsi yang mendapatkan item menu anak diberi jalur simpul. Anda dapat memeriksanya di sini: http://softkube.com/blog/getting-child-menu-items-drupal-menu-tree
Saya menyertakan tautan ke bukti di masa depan, kalau-kalau posting diperbarui dan saya juga akan menyalin / menempelkan kode lengkap di akhir.
Dalam kasus Anda, Anda dapat menjalankan sesuatu seperti ini di tema Anda untuk mendaftar semua item menu anak. Ubah
echo
pernyataan dan tema sesuai keinginan Anda.Dan inilah kode lengkap fungsinya. Periksa tautan untuk kemungkinan pembaruan di masa mendatang.
Semoga berhasil.
sumber
$parameters
dimenu_build_tree
?$parameters
saya gunakan, dan percayalah, saya terlihat banyak. Yang saya inginkan adalah, diberikan jalur, dapatkan semua item menu anak di semua level, dan saya tidak bisa menemukan jalan. Jika ada satu tolong beri tahu saya, saya akan senang untuk belajar dan memperbarui jawaban dan posting blog saya. Bersulang.