Jika Anda mencoba melakukan ini dalam skrip pembaruan, ini akan berfungsi:
$menus = array(
array(
'menu_name' => 'menu_test_one',
'title' => 'My Menu One',
'description' => 'Lorem Ipsum',
),
array(
'menu_name' => 'menu_test_two',
'title' => 'My Menu Two',
'description' => 'Lorem Ipsum',
),
array(
'menu_name' => 'menu_test_three',
'title' => 'My Menu Three',
'description' => 'Lorem Ipsum',
),
);
$links = array(
array(
array(
'link_title' => 'Link1',
'link_path' => 'http://yourdomain.com/link1',
'menu_name' => 'menu_test_one',
'weight' => 0,
'expanded' => 0,
),
array(
'link_title' => 'Link2',
'link_path' => 'http://yourdomain.com/link2',
'menu_name' => 'menu_test_one',
'weight' => 1,
'expanded' => 0,
),
),
array(
array(
'link_title' => 'Link3',
'link_path' => 'http://yourdomain.com/link3',
'menu_name' => 'menu_test_two',
'weight' => 0,
'expanded' => 0,
),
array(
'link_title' => 'Link4',
'link_path' => 'http://yourdomain.com/link4',
'menu_name' => 'menu_test_two',
'weight' => 1,
'expanded' => 0,
),
),
array(
array(
'link_title' => 'Link5',
'link_path' => 'http://yourdomain.com/link5',
'menu_name' => 'menu_test_three',
'weight' => 0,
'expanded' => 0,
),
array(
'link_title' => 'Link6',
'link_path' => 'http://yourdomain.com/link6',
'menu_name' => 'menu_test_three',
'weight' => 1,
'expanded' => 0,
),
),
);
// Save menu group into menu_custom table
foreach ($menus as $menu) {
// Look the table first if the data does exist
$exists = db_query("SELECT title FROM {menu_custom} WHERE menu_name=:menu_name", array(':menu_name' => $menu['menu_name']))->fetchField();
// Save the record if the data does not exist
if (!$exists) {
menu_save($menu);
}
}
$item = '';
foreach ($links as $layer1) {
foreach ($layer1 as $link) {
// Build an array of menu link
$item = array(
'link_path' => $link['link_path'],
'link_title' => $link['link_title'],
'menu_name' => $link['menu_name'],
'weight' => $link['weight'],
'expanded' => $link['expanded'],
);
// Look the table first if the data does exist
$exists = db_query("SELECT mlid from {menu_links} WHERE link_title=:link_title AND link_path=:link_path", array(':link_title' => $link['link_title'], ':link_path' => $link['link_path']))->fetchField();
// Save the record if the data does not exist
if (!$exists) {
menu_link_save($item);
}
}
}
Komentar diterima jika pendekatan saya salah. Terima kasih.
if (!array_key_exists($menu, $menus)) {
- juga menambahkan param tunggal FALSE ke menu_get_menus () mengembalikan hanya menu kustom.Berikut cara mudah mengisi menu dari array:
sumber
hook_menu()
adalah yang Anda butuhkan untuk mengimplementasikan modul kustom Anda. Untuk pembuatan modul khusus, lihat dokumentasi ini .Anda dapat mencetak menu di wilayah mana saja dengan menambahkan kode berikut ke menu
page.tpl.php
file tema Anda.Anda tidak perlu mencetak
third-menu
karena secara default akan muncul di menu navigasi.CATATAN: Ini bukan praktik terbaik sama sekali untuk membuat menu navigasi dan menambahkannya ke halaman. hook_menu () adalah untuk membuat panggilan balik halaman dan bukan untuk membuat menu navigasi. Silakan baca INI , yang menjelaskan perbedaannya. Saya menjawab ini ketika saya mulai belajar Drupal dan saya tidak merekomendasikan jawaban ini lagi.
sumber
Anda juga dapat mencoba modul Menu Impor . Ini sangat keren dan mudah untuk penyebaran menu. Anda dapat membuat menu dengan tangan di situs web Anda dan menggunakan JSON yang dihasilkan. Anda juga dapat membuat simpul untuk halaman yang tidak ada.
Berikut ini contoh skrip ekspor:
Anda dapat menjalankan skrip ini dengan hook_update_N () atau Perbarui skrip prosesor
sumber
Untuk membuat blok menu, dalam file .install Anda, implementasikan tipe hook_enable ()
Dalam file .install yang sama, mengimplementasikan hook_uninstall ().
Selanjutnya dalam file .module Anda, saat menerapkan hook_menu ().
File .inc withing menyertakan folder yang ditempatkan di dalam folder mymodule.
Lihat file devel.install modul devel dan devel.module untuk informasi lebih lanjut.
sumber