Как настроить уведомление о создании темы в определённом разделе форума?

Аватар пользователя Радосвет Радосвет 21 июля 2013 в 12:56

Помогите решить, пожалуйста.

Есть форум, несколько разделов.

1 раздел - общедоступный.
2 раздел - доступ определённой роли (роль 2).
3 раздел - доступ ещё одной роли (роль 3, админы, например).

Мне было необходимо сделать так, чтобы при создании новой темы в форуме отправлялось сообщение всем юзерам.
Я настроил правило, при котором сообщение о новой теме высылается всем юзерам роли 2.
И меня это устроило.

Но при создании темы в разделе 3 тоже отправляется сообщение всем, у кого роль 2.

Вопрос: как настроить правило так, чтобы уведомление о новой теме в разделе 3 отправилось только тем, у кого роль 3?

Спасибо!

0 Thanks

Комментарии

Аватар пользователя Радосвет Радосвет 21 июля 2013 в 13:12

Есть такой момент: создать тему в разделе 3 могут только юзеры с ролью 3.
Быть может это как-то можно использовать в настройках?
Я что-то не смог придумать как... Sad

Аватар пользователя aa2007 aa2007 21 июля 2013 в 19:35

2 правила: 1 для всех разделов ,кроме 3го, 2е только для 3го. создать компонент который будет получать имя роли и производить проверку на соответствие данных. может быть даже два компонента понадобятся.

Аватар пользователя aa2007 aa2007 21 июля 2013 в 23:25

также через сравнение данных. чем у вас задаются разделы? таксономией? тогда надо сравнивать значение поля сущности с термином.

Аватар пользователя Радосвет Радосвет 10 ноября 2015 в 11:50

Спасибо за помощь. Smile

Появилась другая проблема.

При создании материала (после нажатия кнопки "отправить") браузер долго "крутит", системный журнал показывает отправку писем пачками по 5 штук в 2-3 секунды (я пока не понял, почему такая очередь, у меня модуль smtp), в итоге Ошибка сервера 500. Материал создался, но я не совсем понял, почему нужно было ждать отправки уведомлений?

Сервер я перенастроил (увеличил таймаут), но это не выход. С увеличением количество пользователей проблема повторится.

Почему правило срабатывает именно так?

Настройки правила такие:

Может быть, можно добавить какое-то условие, что материал не просто добавлен, но и браузер перезагрузился?
Или как-то отложить на 1 минуту отправку писем?

Есть модуль , может быть, настроить через него отправку любых сообщений с задержкой?
Но мне кажется, что задания в кроне будут выполняться каждую минуту, и грузить сервер...

Аватар пользователя Радосвет Радосвет 23 апреля 2015 в 8:33

Попробовал использовать компонент (action - Отправить уведомление пользователю роли), в котором только действие на отправку, и запуск правила через Rules Scheduler, пока не разобрался, как настроить отложенное время (типа now + 30 sec), всё равно в итоге тестовые уведомления отправились в одно время после запуска крона.

Письма как бы отправились, но в них не сработали токены Sad

В настройке компонента в списке токенов нет нужных (node:title, node:autor).
Письмо приходит с пустыми полями, вместо заголовка и имени юзера.

Но через Rules это же действие (action - Отправить уведомление пользователю роли) даёт возможность использовать нужные токены, и письма отправляются.

Короче, я запутался.

Нужно решить вроде бы простую задачу, но не ладится.

Задача: после создания ноды (определённых типов материала) отправить уведомление о создании этой ноды пользователям определённой роли, но чтобы отправка уведомлений началась с задержкой 30сек после сохранения материала.

Повторюсь, простое правило на отправку мгновенного уведомления срабатывает так, что пока уведомления всем не отправятся, браузер не загрузит страницу с созданным материалом, или вообще выдаст 500 ошибку сервера, так как юзеров много, и отправка через внешний smtp не такая быстрая.

Помогите, пожалуйста!

Аватар пользователя Радосвет Радосвет 7 мая 2015 в 5:49

По последнему вопросу сам разобрался Smile

Единственное, что мне не нравится, это то, что у меня выполнение компонента отложено на 10 секунд, а отправка уведомления идёт всё равно по крону (1 раз в час). Принудительное выполнение крона работает.

С Elysia Cron не удалось подружиться.
Настроил отложенное событие выполняться раз в минуту, ничего не происходит, задача висит в расписании больше минуты.
Если принудительно запустить выполнение крона, то сообщение не отправляется (в журнале ошибок нет), хотя очередь в расписании очищается.

Если кто подскажет по этому вопросу, буду благодарен.