Как создать и установить новый блок меню в какой -то области контента, программно
Вопрос
Я хочу создать новое меню программно добавить для него некоторые элементы и активировать его в какой -то области контента в качестве блока.
Как я могу сделать это программно?
Я знаю, как добавить для существующих новых элементов меню, но я не знаю, как создать новое меню.
Решение
Вы сохраняете меню, используя 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',
);