ertttert
Books-CMS.clan.su

Определение собственного раздела администрирования

В Drupal имеется несколько категорий административных параметров — например, для управления контентом и управления пользователями — которые выводятся на странице Configuration (Конфигурация). Если для какого-то модуля нужна особая категория, ее нетрудно создать. В нашем примере мы создадим новую категорию с названием Node annotation (Аннотирование ноды). Для этого потребуется создать хук для меню модуля и определить новую категорию:

/**
* Реализация 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;
}

Результат этого изменения кода, а именно — новая категория на странице Configuration со ссылкой на параметры нашего модуля, показан на рис. 2.4.

Если вы выполняете все примеры, то чтобы ссылка появилась, понадобится очистить кэш меню. Для этого нужно либо удалить данные из таблицы cache_menu, либо щелкнуть на ссылке Rebuild menus (Пересоздать меню) в модуле разработки Drupal (devel.module), либо с помощью кнопки Clear cached data (Очистить кэшированные данные), зайдя на страницу Configuration (Настройка) и щелкнув на ссылке Performance (Производительность).

Совет. Модуль разработки (http://drupal.org/project/devel) написан специально для поддержки разработки для Drupal. Он предоставляет быстрый доступ ко многим функциям разработки: очистке кэша, просмотру переменных, отслеживанию запросов и т.п. Это необходимый инструмент для серьезных проектов.

Мы создали новую категорию в два этапа. Сначала мы добавили пункт меню, который описывает заголовок категории. Этот пункт имеет уникальный путь (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_admin_menu_block_page() в модуле system.module), необходимо указать Drupal загрузить файл modules/system/system.admin.inc, а не sites/all/modules/custom/annotate/system.admin.inc.

Конечно, это не очень естественный пример, и в реальности необходимо иметь веские причины для создания новой категории, чтобы запутывать администратора (обычно себя!) обилием категорий.

Всего комментариев: 0
Имя *:
Email *:
Код *:


Бесплатный конструктор сайтов - uCoz