В Drupal поддерживается множество различных типов нод (в пользовательском интерфейсе они называются типами контента (content type)), такие как статьи и базовые страницы.
В Drupal имеется несколько категорий административных параметров — например, для управления контентом и управления пользователями — которые выводятся на странице Configuration (Конфигурация). Если для какого-то модуля нужна особая категория, ее нетрудно создать. В нашем примере мы создадим новую категорию с названием Node annotation (Аннотирование ноды). Для этого потребуется создать хук для меню модуля и определить новую категорию:
В модуле аннотирования администратору предоставлена возможность указать, какие типы нод должны поддерживать аннотирование. Рассмотрим этот механизм.
В приведенном ниже разделе выполняется изменение значений и щелчок на кнопке Save configuration (Сохранить конфигурацию).
Обычно при работе с Drupal требуется каким-то образом реагировать на определенные события. Например, администратору сайта может понадобиться почтовое сообщение об отправке посетителем текста на сайт. Или следует заблокировать пользователя, если он употребляет недопустимые слова. В данной главе описано, как реагировать на события Drupal с помощью собственного кода.
Действие (action) — это что-то, выполняемое Drupal.
Итак, мы знаем, что сигнатура функций для действий имеет вид example_action($object, $context). Рассмотрим каждый из этих параметров.
Действия — это функции, которые выполняются в указанный момент. Для простых действий не нужны конфигурируемые параметры. Например, созданное ранее действие Beep просто выдает звуковой сигнал. Ему не нужна никакая дополнительная информации (хотя, разумеется, параметры $object и $context доступны). Сравните это действие с также созданным нами расширенным действием Beep multiple times (Несколько гудков): ему необходимо знать, сколько нужно звуковых сигналов. Другим расширенным действиям, вроде Send e-mail (Послать почтовое сообщение), может потребоваться еще более информации: адресат, тема сообщения и т.д. Эти параметры должны храниться в базе данных.
Модуль триггера — это лишь один из способов вызова действий. Может понадобиться написать отдельный модуль, который сам вызывает действия и подготавливает для них параметры. В таком случае для вызова действий рекомендуется функция actions_do().
Каким образом Drupal узнает, какие триггеры доступны для вывода в пользовательском интерфейсе? Обычно Drupal позволяет модулям определять хуки с объявлениями, какие триггеры реализованы в этих модулях.