web-dev-qa-db-fra.com

Comment créer et définir un nouveau bloc de menu dans une région de contenu, par programme

Je souhaite créer un nouveau menu ajouter par programme pour lui certains éléments et le activer dans une région de contenu en tant que bloc.

Comment puis-je faire cela par programme?

Je sais comment ajouter pour un menu existant Nouveaux éléments, mais je ne sais pas comment créer un nouveau menu.

1
Ek Kosmos

Vous enregistrez le menu en utilisant menu_save:

$menu = array(
  'menu_name' => '',
  'title' => '',
  'description' => '',
);
menu_save($menu);

Je ne sais pas s'il y a une fonction API pour activer un bloc, mais cela peut être fait en insérant une rangée dans la table des blocs. Vous devez connaître le module, le delta, le thème et la région. Pour les menus, le module de menu créera un avec le delta étant le nom de menu.

Donc, avec ce qui précède, vous pourriez faire quelque chose comme ça:

$menu_block = array(
  'module' => 'menu',
  'delta' => $menu['menu_name'],
  'theme' => '', // Either get the active theme or you can do it for all themes
  'region' => 'content', // Where you want to place it, theme dependant
  'status' => 1,
);

Donc, alors que vous pouvez le faire, vous voulez probablement rendre ce thème spécifique ou le faire dans un profil d'installation, où vous savez quel thème devrait être l'actif etc.

3
googletorp