Как в друпал 9 отключить блок при выполнении пользователем определенного действия?

Главные вкладки

Комментарии

Аватар пользователя marassa marassa 21 декабря 2020 в 15:42

Что в данном контексте понимается под "пользователем"? Это зарегистрированный пользователь с логином и паролем, который, единожды отправив форму, должен лишиться этого блока до конца своих дней, или любой анонимный посетитель, который, отправив форму, должен лишиться блока до конца своей сессии?

Аватар пользователя orel orel 21 декабря 2020 в 17:15

Речь идет о зарегистрированном пользователе. Перед тем, как отправить форму, он должен заполнить поля в профиле (при регистрации он вводит минимум информации). Там числовые значения, которые используются в форме.
Результат формы текущего пользователя я вывожу в шапке сайта.
Я создала форму и вьюс с результатами. В поведении при отсутствии результатов написала сообщение о необходимости ввести данные в профиле. Получается, если пользователь их вводит, эта строка остается до тех пор, пока он не отправит форму. Мне нужно, чтобы эта строка больше не выводилась или вместо нее он увидел сообщение типа Теперь можно отправить форму.
Что нужно прежде всего: чтобы только что зарег. пользователь понимал, что нужно зайти в edit профиля (эти поля обязательные). Но как только он это сделает, уведомление должно пропасть.

Аватар пользователя marassa marassa 21 декабря 2020 в 17:26

По моему скромному мнению правильнее всего сделать так:
1. Создать роль "Профиль заполнен".
2. Сделать так, чтобы при заполнении профиля пользователю присваивалась эта роль. Вот тут возможно потребуется программирование (довольно нехитрое).
3. В условиях отображения блока с напоминалкой добавить условие Роль != Профиль заполнен.

Аватар пользователя vladtulku vladtulku 21 декабря 2020 в 19:17

Не уверен есть ли такой функционал в девятке, но в семерке есть Action с такими параметрами:
1.Пометить (или снять пометку) материал... предполагаю, что можно пометить материал как прочитанный. Который в свою очередь не будет отображаться как прочитанный в блоке. Пустой блок так же не будет отображаться.
2. Есть вариант -Изменить роль пользователя. Тогда ничего программировать не нужно из Вашего предложения.
3. Пометить (или снять пометку) с пользователя... можно обыграть и данное условие.

Аватар пользователя VasyOK VasyOK 21 декабря 2020 в 23:31

Ну так в чем проблемы? Просто включить эту опцию. Вебформы то они блоками выводятся. А если человек форму заполнял - ему сообщение будет. Ну или через jQuery дулаить сам блок при наличии этого сообщения. Адано любит когда я такие советы даю Lol

Аватар пользователя orel orel 22 декабря 2020 в 0:59

В итоге как сделала я: поскольку элементы формы связаны со значениями из профиля, я установила условие CONDITIONAL LOGIC: если поле из профиля пустое, элемент формы, связанный с ним, отключить. При этом я добавила в начале формы элемент тип Сообщение (тип Предупреждение) с условием visible при наличии отключенных полей, поясняющее о необходимости заполнить профиль.

Принцип такой же, как у conditional_fields.

Однако хотелось бы научиться управлять выводом блоков: отключать блоки при определенных условиях.