Drupal → Собственное событие для Rules

15.08.2013

Создание своего event-a для Rules состоит из двух шагов — реализация hook_rules_event_info() и вызов rules_invoke_event().

Пример события, которое возникает после смены имени пользователя:

/**
 * Implements hook_rules_event_info().
 */
function modulename_rules_event_info() {
  $items = array(
    'user_name_changed' => array(
      'label' => t('After changing user name'),
      'group' => t('User'),
      'variables' => array(
        'user' => array(
          'type' => 'user',
          'label' => t('user'),
        ),
      ),
    ),
  );
  return $items;
}

/**
 * Implements hook_entity_update().
 */
function modulename_entity_update($entity, $type) {
  if ($type == 'user' && $entity->name != $entity->original->name) {
    rules_invoke_event('user_name_changed', $entity);
  }
}

Код следует помещать в файл MODULENAME.rules.inc.

Собственный condition для Rules

Написанное актуально для
Rules 2
Похожие записи

Комментарии

Гость
08.05.2016, 22:20

Очень интересно. Возможно ли создать ивент на сабмит кастомной формы? Как передать аргументы?

Shipovnix
19.09.2017, 08:29

Спасибо!
Подскажите, пожалуйста, каков должен быть код функции объявления ивента, чтобы протащить туда node определенного типа со всеми его полями?

Мой код постоянно дает ошибки даже на этапе сохранения условия по типу материала, жалуется на:
Notice: Undefined property: RulesReactionRule::$type в функции RulesNodeConditionType->execute() (строка 55 в файле Z:\home\helpdeskpfr.local\www\sites\all\modules\rules\modules\node.eval.inc).

Хук ивента:
function hdrules_rules_event_info() {
$items = array(
'hdrules_ticket_close' => array(
'label' => 'Заявки: Закрытие заявки',
'group' => 'HDRules',
'variables' => array(
'node' => array(
'type' => 'node',
'label' => t('Ticket'),
),
),
),
);
return $items;
}

Хук правильный. Судя по ошибке, вы вместо ноды передаёте объект RulesNodeConditionType.

Shipovnix
20.09.2017, 07:07

Так я еще до выполнения кода, до передачи объекта, получаю эту ошибку, на этапе создания правила.

Добавить комментарий