hook_action_info
developer/hooks/core.php, строка 65
- Версии
- 6
hook_action_info()
Информирует триггеры Друпала о новых действиях.
Любой модуль Друпала может определить любое количество действий (action). Модуль trigger является примером модуля, который использует эти действия. Действие состоит из двух или трех частей:
- описания действия (возвращаемое эти хуком);
- функции, которая выполняет действие (по соглашению эту функцию называют имя_модуля +
'_'+ описание_действия +'_action'); - необязательного описания формы настроек для этого действия (форму настроек описывает функция с именем полное_имя_действия +
'_form').
Функции, которая выполняет действие при вызове передается 2 параметра: объект того же типа, как и значение элемента 'type' из массива hook_action_info, и массив-контекст, описывающий, собственно, контекст, в котором в данный момент запускается действие. К примеру, модуль trigger устанавливает в этом массиве значения с ключами 'hook' и 'op' (то есть для действия, вызываемого при обработке события 'insert' в хуке 'nodeapi' контекст может выглядеть как array('hook' => 'nodeapi', 'op' => 'insert')).
Возвращаемое значение
- Ассоциативный массив описаний всех действий, реализованных в модуле. Ключи этого массива — имена функций, реализующих действие, значения — описания действий. Описание действия в свою очередь является ассоциативным массивом с такими парами ключ-значение:
'type': (обязательно) определяет, какой тип объектов будет передан действию. Допустимые значения:'node','user','comment'и'system'или любой пользовательский тип. Например, для модуля nodequeue, реализующего последовательность нод, тип можно установить равным'nodequeue', если действие должно работать с последовательностями нод.'description': (обязательно) Описание действия для пользователей.'configurable': (обязательно) Булево значение. Если оно равноFALSE, действию не требуется дополнительная настройка. ЕслиTRUE— настройка требуется, в этом случае необходимо определить конструктор формы настройки. Конструктор формы настройки — это функция с именем, состоящим из имени действия и суффикса'_form'(т.е., для действия'node_assign_owner_action'это будет'node_assign_owner_action_form'). Функции передается параметр$context; при необходимости форму можно дополнить стандартными функциями_submitи_validate.'hooks': (обязательно) Массив всех операций, к которым применимо данное дейстиве. Ключами массива являются имена хуков. Модуль trigger использует этот параметр для того, чтобы отфильтровать непоходящие действия в административном интерфейсе. Определяя в модуле действие, поддерживающее все возможные хуки, можно установить'hooks' => array('any' => TRUE). Часто используются хуки'user','nodeapi','comment'и'taxonomy'. Можно использовать имя любого хука, определенного с помощью функцииhook_hook_info().'behavior': (необязательно) Массив, описывающий «поведение» действия. Ядро Друпала поддерживает только одно поведение —'changes_node_property'. Если для действия указано такое поведение, это означает, что действие изменяет свойства ноды; в этом случае по окончанию действия нода будет автоматически сохранена.
Связанные темы
Код
<?php
function hook_action_info() {
return array(
'comment_unpublish_action' => array(
'description' => t('Unpublish comment'),
'type' => 'comment',
'configurable' => FALSE,
'hooks' => array(
'comment' => array('insert', 'update'),
)
),
'comment_unpublish_by_keyword_action' => array(
'description' => t('Unpublish comment containing keyword(s)'),
'type' => 'comment',
'configurable' => TRUE,
'hooks' => array(
'comment' => array('insert', 'update'),
)
)
);
}
?>Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии 