ertttert
В Drupal имеется несколько категорий административных параметров — например, для управления контентом и управления пользователями — которые выводятся на странице
(Конфигурация). Если для какого-то модуля нужна особая категория, ее нетрудно создать. В нашем примере мы создадим новую категорию с названием (Аннотирование ноды). Для этого потребуется создать хук для меню модуля и определить новую категорию:/** * Реализация hook_menu(). */ function annotate_menu() { $items['admin/config/annotate'] =array( 'title' => 'Node annotation','description' => 'Adjust node annotation options.','position' => 'right','weight' => -5,'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/config/annotate/settings'] =array( 'title' => 'Annotation settings','description' => 'Change how annotations behave.','page callback' => 'drupal_get_form','page arguments' =>array( 'annotate_admin_settings') ,'access arguments' =>array( 'administer site configuration') ,'type' => MENU_NORMAL_ITEM,'file' => 'annotate.admin.inc', );return $items; }
Результат этого изменения кода, а именно — новая категория на странице
со ссылкой на параметры нашего модуля, показан на рис. 2.4.Если вы выполняете все примеры, то чтобы ссылка появилась, понадобится очистить кэш меню. Для этого нужно либо удалить данные из таблицы cache_menu
, либо щелкнуть на ссылке (Пересоздать меню) в модуле разработки Drupal (devel.module), либо с помощью кнопки (Очистить кэшированные данные), зайдя на страницу (Настройка) и щелкнув на ссылке (Производительность).
Мы создали новую категорию в два этапа. Сначала мы добавили пункт меню, который описывает заголовок категории. Этот пункт имеет уникальный путь (admin/config/annotate
). Его следует поместить в правый столбец с весом -5, т.к. тогда он будет расположен как раз над категорией Web Services (Веб-службы), что удобнее всего для снимка экрана, показанного на рис. 2.3.
На втором этапе нужно было указать системе Drupal разместить ссылку на параметры аннотирования в категории Node annotation (Аннотирование ноды). Для этого мы изменили путь к первоначальному пункту меню admin/settings/annotate
на admin/config/annotate/settings
. Когда среда Drupal перестраивает дерево меню, она просматривает пути для создания отношений между родительскими и дочерними пунктами и определяет, что поскольку admin/config/annotate/settings
является потомком admin/config/annotate
, он должен отображаться соответственно.
Drupal загружает только те файлы, которые необходимы для выполнения запроса. Это экономит память. Поскольку обратный вызов страницы указывает на функцию за пределами области действия модуля (функция system.module
), необходимо указать Drupal загрузить файл modules/system/system.admin.inc
, а не sites/all/modules/custom/annotate/system.admin.inc
.
Конечно, это не очень естественный пример, и в реальности необходимо иметь веские причины для создания новой категории, чтобы запутывать администратора (обычно себя!) обилием категорий.
Всего комментариев: 0 | |