Как создать и установить новый блок меню в какой -то области контента, программно

drupal.stackexchange https://drupal.stackexchange.com/questions/1711

  •  16-10-2019
  •  | 
  •  

Вопрос

Я хочу создать новое меню программно добавить для него некоторые элементы и активировать его в какой -то области контента в качестве блока.

Как я могу сделать это программно?

Я знаю, как добавить для существующих новых элементов меню, но я не знаю, как создать новое меню.

Это было полезно?

Решение

Вы сохраняете меню, используя menu_save:

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

Я не уверен, есть ли функция API для активации блока, но это можно сделать, вставив строку в таблицу блоков. Вам нужно знать модуль, дельту, тему и регион. Для меню модуль меню создаст один с Delta, который является Menu_Name.

Итак, с вышеизложенным вы могли бы сделать что -то вроде этого:

$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,
);

Таким образом, хотя вы можете сделать это, вы, вероятно, хотите сделать эту тему конкретной или сделать это в профиле установки, где вы знаете, какая тема должна быть активной и т. Д.

Другие советы

У меня был аналогичный вопрос несколько дней назад. Вы можете сделать меню, как обычно, в модуле, используя kuk_menu, а затем создать новое меню, используя hook_install

 $items['devel/cache/clear'] = array(
  'title' => 'Empty cache',
  'page callback' => 'devel_cache_clear',
  'description' => 'Clear the CSS cache and all database cache tables which store page, node, theme and variable caches.',
  'access arguments' => array('access devel information'),
  'menu_name' => 'devel',
);

Пользовательский модуль с собственным меню?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с drupal.stackexchange
scroll top