Популярный административный модуль admin_menu, собирает всё самое нужное и важное для управления сайтом. И хотя в 7 версии в ядре вы найдете модуль tool, обладающий похожим функционалом, ему не удалось заменить admin_menu.
Далее, разберем код, добавляющий пункт меню в admin_menu.
Потребуется реализовать две зацепки и функцию обработчик страницы.
Модуль admin_menu позволяет зацепиться за вывод меню, чтобы ваш модуль мог добавить необходимые пункты в массив элементов.
1 2 3 4 5 6 7 8 9 10 11 12 |
/** * Implements hook_admin_menu_output_alter(). */ function MODULENAME_admin_menu_output_alter(&$content) { // добавляю ссылку в меню сброса компонентов кеша $content['icon']['icon']['flush-cache']['LINK-NAME'] = array( '#title' => t('MY LINK TITLE'), '#href' => 'MY-LINK-PATH', '#options' => array( ... // если нужны параметры GET ), ); } |
Вам потребуется изучить структуру дерева административного меню, прежде чем добавлять туда свои элементы. Свойства элементов идентичны параметрам шаблона ссылки (link). В примере, я добавляю пункт меню в ветку сброса компонентов кеша (cache).
Если ссылка указывает на внешний ресурс, то на этом можно и завершить рассказ, но для внутренних разделов сайта понадобиться добавить адрес через menu API, реализовав hook_menu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
/** * Implementation hook user login. */ function MODULENAME_menu() { $items = array(); // Admin menu callback to clear menu router caches. $items['MY-LINK-PATH'] = array( 'page callback' => '_MODULENAME_callback_function', // список разрешений для доступа к странице // уже существующих или заданных через // реализацию hook_permission() 'access arguments' => array( ... ), // настройки зависят от вашей задачи 'type' => MENU_CALLBACK, ); return $items; } |
Ну и остаётся добавить реализацию программного кода, который реализует собственно какую то полезную функцию на сайте.
1 2 3 4 5 6 7 |
/** * Menu callback function. */ function _MODULENAME_callback_function() { // ваш код ... } |