Как отображать сообщение при входе в систему до тех пор, пока пользователь не заполнит определенную веб-форму?


Установлены соответствующие модули:

Что я пробовал:

  • Правило 1: активируется при входе пользователя в систему, при котором отображается системное сообщение.
  • Правило 2: активируется при отправке веб-формы с условием, что имя веб-формы является обязательным именем. Правило выполняется PHP-код для отключения правила 1, если оно верно.
/**
* Implements hook_update_N().
* Disables name_of_rule rule.
*/
function hook_update_N() {
  $rules_config = rules_config_load('name_of_rule');
  $rules_config->active = FALSE;
  $rules_config->save();
}

Однако в данный момент этот набор правил НЕ работает.

Проблемы:

  • Если Правило 1 работало, как я могу гарантировать, что оно навсегда отключит правило 1 для каждого пользователя, а не глобально?
  • Есть ли лучший способ сделать это?
  • Например, все, что мне нужно, - это одно правило: При входе пользователя +, если веб-форма не была заполнена, отобразите сообщение. Однако мне не удалось найти модуль, который добавляет правило "Если веб-форма не была заполнена".
Author: Pierre.Vriens, 2015-09-16

2 answers

Ссылаясь на ваше "есть ли лучший способ сделать это": не уверен, что вы сочтете это "лучшим", но именно так я бы адаптировал ваши 2 правила на самом деле " отображать сообщение при входе в систему, пока пользователь не заполнит веб-форму " (как в названии вашего вопроса):

  • В вашем правиле 2 я бы использовал действие , чтобы "пометить" пользователя, используя модуль Флаг с (не глобальным) флагом с именем что-то вроде "Веб-форма в порядке" (и "Веб-форма не в порядке" в качестве альтернативы). По кстати, природа такого флага такова, что он предназначен для каждого пользователя индивидуально.

  • В своем правиле 1 добавьте условие типа "Этот пользователь НЕ помечен (с флагом веб-формы OK)".

С помощью этих 2 исправлений ваших 2 правил и добавления модуля флага в свой микс вы можете:

  • вероятно, упростите оба правила, например, удалите (потенциально опасный?) PHP-код в вашем правиле 2.
  • возможно, устраните "Условные правила" модуль.
 0
Author: Pierre.Vriens, 2015-09-16 19:59:08

Я думаю, что модуль, который вы ищете, - это "Отправленная веб-форма правил".

Этот модуль аналогичен Правилам веб-формы в том, что он поддерживает интеграцию между веб-формой и Правилами, но отличается тем, что Правила веб-формы поддерживают событие "Отправлена веб-форма", в то время как Отправленная веб-форма правил обеспечивает условие, которое обычно инициируется Событием Узла.

Таким образом, вы можете использовать событие "При входе пользователя в систему" и условие, которое предлагает "Отправленная веб-форма правил", для создания вашего правило.

 1
Author: Blanca Esqueda, 2015-09-16 20:04:50