Хуки Drupal: для чего нужны и как использовать
Итак модуль Drupal представляет собой набор функций, выполнение которых и позволяет обеспечить функциональность модуля. Drupal вызывает в нужный момент нужную функцию обеспечивая тем самым нужную функциональность.
Например, при выводе блоков Drupal обращается к функции модуля которая и выдает содержимое данного блока. При выводе формы, позволяющей редактировать настройки данного модуля вызывается функция, возвращающая данную форму.
Чтобы друпалу не запутаться используется специальная система в названиях функций. Каждая такая функция называется hook. Среди русскоязычных пользователей друпал используется обозначение хук, хотя изредка его и переводят на русский - ловушка. Полный список хуков можно увидеть на странице http://api.drupal.org/api/group/hooks/6, а пока рассмотрим применение на примере хука справки.
Реализация хука help
На каждой странице Друпала зарезервировано место для вывода справки. Это место определяется в шаблоне темы, для стандартной Garland расположено между заголовком страницы и основным текстом. Справку можно установить для любой страницы.
Чтобы его создать необходимо в файле модуля определить функцию вида имя_модуля_help($path). Параметр $path задает страницу на которой будет выводиться справка.
Для модуля simplemodule можно реализовать следующий хук справки:
<?php
function simplemodule_help($path){
switch($path){
case 'admin/help#simplemodule':
$output='<p>Это простейший модуль для Drupal.</p>';
$output.='<p>В нем реализован хук справки</p>';
return $output;
case 'node/add':
return 'Это страница добавления нового материала на сайт. Выберите тип материала.';
case 'about':
$output='Страница содержит описание сайта. Прочтите ее внимательно.';
return $output;
}
return 'Для этой страницы нет справки. Думаю разберетесь сами.';
}
?>На странице "admin/help" имеется список ссылок на страницы справки модулей. Сама справка задается в виде пути "admin/help#имя_модуля" и доступна по адресу "admin/help/имя_модуля".
Для нашего модуля текст справки описан в ветке с case "admin/help#simplemodule". Если бы ее не было ветки бы тоже не было.
Далее в хуке help задан текст справки для двух страниц: node/add (выводится на странице выбора типа добавляемого на сайт материала) и about (предполагается, что у вас на сайте есть страница с таким адресом).
И последнее. За пределами блока switch возвращается текст справки для всех остальных страниц, для которых не удосужились определить справку ранее. Возможность бессмысленная, поэтому ее нигде и не используют. Но может кому и пригодится.

Комментарии:
Отправить комментарий