В статье "
Текстовые форматы и редакторы в Drupal" было рассмотрено, как создавать действия в системе управления сайтом Drupal. Это касается сложных действий, так как простые действия доступны по умолчанию, пользователь может только управлять их переводами.
Способы вызова действий
Для использования уже созданных действий в Drupal доступны следующие варианты:
- использование модулей;
- самостоятельное написание кода.
В старых версиях Drupal для использования действий применялся модуль Trigger. Позже ему на смену пришёл модуль Rules. В некоторых версиях Drupal модуль присутствует по умолчанию, для других его нужно скачать отдельно. Проследить за актуальными версиями можно на официальном сайте платформы.
Использовать действия (Actions) можно в связке и с другими модулями, например, Workflow, используемого для ведения документооборота. По умолчанию среди действий есть «Опубликовать материал», оно используется в Workflow, когда нужно поменять статус материала, чтобы он стал доступен всем пользователям. Также действие «Опубликовать материал» используется в системе каждый раз, когда администратор, модератор или пользователей публикую статью.
Самостоятельное написание кода для вызова действий
Создавать Actions можно не только через панель управления, но и через написание PHP кода. Каждое действие является функцией с определённым именем. Попробуем написать функцию с названием "beep_action_info()". Единственное что будет делать эта функция - это проигрывать звуковой сигнал при вызове.
function beep_action_info() {
return array(
'beep_beep_action' => array(
'type' => 'system',
'label' => t('Beep'),
'configurable' => FALSE,
'triggers' => array('any'),
),
);
}
Эта функция является реализацией
hook_action_info
. Она возвращает массив данных с несколькими ключами. Первый ключ "beep_beep_action" - это название функции, которая будет вызываться на определённое действие. По этому ключу располагается массив с параметрами, которые будут использоваться:
- type – тип создаваемого действия, это может быть system (система), node (нода), user (пользователь), comment (комментарий) и taxonomy (таксономия), при неочевидности выбора следует выбирать system;
- label – имя действия, которое будет использоваться, если для вызова действия на сайте будет использоваться модуль. Модуль "Beep" является системным. Но можно указать название своего модуля ;
- configurable – наличие у действия принимаемых параметров;
- triggers – на какие операции будет вызываться функция. Значение "any" позволяет работать с любой операцией. То есть что бы мы ни сделали на сайта, будем слышать звуковой сигнал.
Теперь нужно написать саму функцию "beep_beep_action"
function beep_beep_action() {
beep_beep(); // звуковой сигнал гудка
}
Реализация действия становится возможной благодаря функции hook_action_info(). Осталось зайти в настройки триггеров и установить действие, чтобы оно срабатывало в нужный момент.