Модуль 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; }