Si vous essayez de le faire dans un script de mise à jour, cela devrait fonctionner:
$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);
}
}
}
Les commentaires sont les bienvenus si mon approche est fausse. Merci.
if (!array_key_exists($menu, $menus)) {
- l'ajout du seul paramètre FALSE à menu_get_menus () ne renvoie que des menus personnalisés.Voici un moyen de remplir facilement un menu à partir d'un tableau:
la source
hook_menu()
est tout ce dont vous avez besoin pour implémenter votre module personnalisé. Pour la création d'un module personnalisé, reportez-vous à cette documentation .Vous pouvez imprimer le menu dans n'importe quelle région en ajoutant le code suivant au
page.tpl.php
fichier de votre thème.Vous n'avez pas besoin d'imprimer
third-menu
car par défaut, il apparaîtra dans le menu de navigation.REMARQUE: ce n'est pas du tout la meilleure pratique pour créer un menu de navigation et l'ajouter à une page. hook_menu () sert à créer des rappels de page et non à créer des menus de navigation. Veuillez lire CECI , qui explique les différences. J'ai répondu à cela quand j'ai commencé à apprendre Drupal et je ne recommande plus cette réponse.
la source
Vous pouvez également essayer le module Importation de menu . C'est très cool et facile pour le déploiement de menus. Vous pouvez créer un menu à la main sur votre site Web et utiliser le JSON généré. Vous pouvez également créer des nœuds pour des pages non existantes.
Voici un exemple de script d'exportation:
Vous pouvez exécuter ce script avec hook_update_N () ou Mettre à jour le processeur de script
la source
Pour créer un bloc de menu, dans votre fichier .install implémentant le type hook_enable ()
Dans le même fichier .install, implémentation de hook_uninstall ().
Ensuite dans votre fichier .module, lors de l'implémentation de hook_menu ().
Le fichier .inc est withing inclut le dossier placé dans le dossier mymodule.
Voir le fichier devel.install et devel.module du module devel pour plus d'informations.
la source