Модуль rules позволяет веб разработчику выполнять нужные события (actions) после выполнения определенных действий (events). В его арсенале уже имеется список событий и действий, используя которые, можно создавать собственные правила. Однако бывают ситуации, когда они не подходят для реализации задуманного функционала. В этом случае можно создать собственный «экшн» или «ивент». Здесь мы рассмотрим, как реализуется функционал создания собственного действия и события. Итак, скачиваем и устанавливаем модуль Rules, которому предстоит обеспечить нас нужным API, и приступаем к реализации задуманного.
Создание собственного «экшина» начинается с объявления hook_rules_action_info(). Для этого желательно создать отдельный файл module.rules.inc, (module — имя вашего модуля), в который и будем помещать код. Для примера, давайте будем выводить некоторое сообщение пользователям с определенной ролью. Нам нужно будет передавать в функцию выполнения события роль пользователей, которым выводиться сообщение, и собственно текст самого сообщения. Начнем с реализации хука:
/**
* Implements hook_rules_action_info().
*/
function internetdevels_rules_action_info() {
$actions = array(
'internetdevels_view_message' => array(
'label' => t('View message for selected users'),
'group' => t('My custom actions'),
'parameter' => array(
// To select a user role.
'roles' => array(
'type' => 'list',
'label' => t('Roles'),
'options list' => 'entity_metadata_user_roles',
'description' => t('Select the roles whose users can view your message.'),
),
// Messages that should appear after a particular action.
'message' => array(
'type' => 'text',
'label' => t('Message'),
'description' => t("The message body."),
),
),
),
);
return $actions;
}
