Друпал 7: добавить элемент меню панели администрирования программно
Я создаю довольно сложный модуль для своей компании с несколькими различными страницами конфигурации. Я бы хотел, чтобы в верхней части панели администратора был пункт меню, в котором также есть все пункты подменю. Я знаю, как добавить один пункт в это меню через пользовательский интерфейс, но там будет достаточно страниц, которые я бы предпочел сделать через сам модуль. Итак, как я могу добавить элемент с подменю, чтобы сидеть рядом с "Dashboard", "Content", "Structure" и т. д. в меню администратора в моем модуле файл. Я предположил, что это должно быть в hook_menu (), но я не могу понять это.
1 ответ:
Это может быть достигнуто путем добавления
'page callback'
изsystem_admin_menu_block_page
в вашуhook_menu
реализацию:
Итак, допустим, вы хотите создать структуру, подобную следующей:
- Пользовательское главное меню (появится на панели инструментов, помимо других пунктов, таких как структура, модули , etc)
- пункт 1 подменю
- пункт 2 подменю
Реализация крюка будет выглядеть примерно так:
function MODULE_menu() { $items['admin/main'] = array( 'title' => 'Custom main menu', 'description' => 'Main menu item which should appear on the toolbar', 'position' => 'left', 'weight' => -100, // Less weight so that it will appear to the extreme left, before dashboard. 'page callback' => 'system_admin_menu_block_page', 'access arguments' => array('administer site configuration'), 'file' => 'system.admin.inc', 'file path' => drupal_get_path('module', 'system'), ); $items['admin/main/sub-menu-1'] = array( 'title' => 'Sub menu item 1', 'description' => 'Child of the menu appearing in toolbar.', 'page callback' => 'drupal_get_form', 'page arguments' => array('custom_form'), 'access arguments' => array('custom permission'), 'type' => MENU_NORMAL_ITEM, ); $items['admin/main/sub-menu-2'] = array( 'title' => 'Sub menu item 2', 'description' => 'Child of the menu appearing in toolbar.', 'page callback' => 'custom_page_callback', 'access arguments' => array('custom permission'), 'type' => MENU_NORMAL_ITEM, ); }
P. S-После включения модуль, или добавление этого кода в реализацию hook_menu, вы должны будете очистить кэш, чтобы Drupal принял новую структуру меню.