How to create menu and menu items programmatically in Drupal

Comment créer des éléments de menu par programmation dans Drupal 7

Lorsque vous utilisez le développement piloté par le code sur des sites web basés sur Drupal, il arrive parfois que vous deviez créer un menu ou un élément de menu de manière programmatique dans hook_update_N.

Nous utilisons souvent cette approche de développement lorsque, dans le cadre de nos services de support Drupal, nous préparons un grand lot de modifications à déployer en une seule fois. Cela est également utile lorsque vous construisez un site web d'entreprise sur Drupal au sein d'une configuration CI et que vous souhaitez le remplir avec des données fictives générées à partir du code.

Les extraits de code ci-dessous vous montrent comment faire cela dans Drupal 7.

Comment créer un menu de manière programmatique :

$menu = array( 'menu_name' => 'header-top-menu', // Nom machine du menu Drupal 'title' => 'Header top menu', // Nom d'affichage du menu Drupal 'description' => 'Header top menu', // Description optionnelle du menu ); menu_save($menu);

Comment créer un lien de menu de manière programmatique :

$node = node_load(123); // Charger un nœud de la base de données et l'utiliser pour le nouveau lien de menu. $item = array( 'link_path' => 'node/' . $node->nid, 'link_title' => $node->title, 'menu_name' => 'header-top-menu', // Nom machine du menu, par exemple : main-menu 'weight' => 0, 'language' => $node->language, 'plid' => 0, // Élé... 'module' => 'menu', ); menu_link_save($item);

N'oubliez pas que vous pouvez tester ce code en utilisant le module Devel sur la page /devel/php avant d'exécuter hook_update_N.

3. Best practices for software development teams