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'),
)
)
);
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии