Друпал 7: добавить элемент меню панели администрирования программно


Я создаю довольно сложный модуль для своей компании с несколькими различными страницами конфигурации. Я бы хотел, чтобы в верхней части панели администратора был пункт меню, в котором также есть все пункты подменю. Я знаю, как добавить один пункт в это меню через пользовательский интерфейс, но там будет достаточно страниц, которые я бы предпочел сделать через сам модуль. Итак, как я могу добавить элемент с подменю, чтобы сидеть рядом с "Dashboard", "Content", "Structure" и т. д. в меню администратора в моем модуле файл. Я предположил, что это должно быть в hook_menu (), но я не могу понять это.

1 4

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 принял новую структуру меню.