Как отображать сообщение при входе в систему до тех пор, пока пользователь не заполнит определенную веб-форму?
Установлены соответствующие модули:
Что я пробовал:
- Правило 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 для каждого пользователя, а не глобально?
- Есть ли лучший способ сделать это?
- Например, все, что мне нужно, - это одно правило: При входе пользователя +, если веб-форма не была заполнена, отобразите сообщение. Однако мне не удалось найти модуль, который добавляет правило "Если веб-форма не была заполнена".
2 answers
Ссылаясь на ваше "есть ли лучший способ сделать это": не уверен, что вы сочтете это "лучшим", но именно так я бы адаптировал ваши 2 правила на самом деле " отображать сообщение при входе в систему, пока пользователь не заполнит веб-форму " (как в названии вашего вопроса):
В вашем правиле 2 я бы использовал действие , чтобы "пометить" пользователя, используя модуль Флаг с (не глобальным) флагом с именем что-то вроде "Веб-форма в порядке" (и "Веб-форма не в порядке" в качестве альтернативы). По кстати, природа такого флага такова, что он предназначен для каждого пользователя индивидуально.
В своем правиле 1 добавьте условие типа "Этот пользователь НЕ помечен (с флагом веб-формы OK)".
С помощью этих 2 исправлений ваших 2 правил и добавления модуля флага в свой микс вы можете:
- вероятно, упростите оба правила, например, удалите (потенциально опасный?) PHP-код в вашем правиле 2.
- возможно, устраните "Условные правила" модуль.
Я думаю, что модуль, который вы ищете, - это "Отправленная веб-форма правил".
Этот модуль аналогичен Правилам веб-формы в том, что он поддерживает интеграцию между веб-формой и Правилами, но отличается тем, что Правила веб-формы поддерживают событие "Отправлена веб-форма", в то время как Отправленная веб-форма правил обеспечивает условие, которое обычно инициируется Событием Узла.
Таким образом, вы можете использовать событие "При входе пользователя в систему" и условие, которое предлагает "Отправленная веб-форма правил", для создания вашего правило.