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

Я пытаюсь добиться уведомления по электронной почте. Условие таково, что он должен уйти к концу дня со списком опубликованного контента за текущий день.

Для того же я пробовал пару вещей, используя Правила, но застрял между ними.

Любая помощь?

Я попытался использовать правила и создал такое правило:

  • События:

    1. After updating existing content of type(content type name)
    2. Задачи обслуживания Cron выполняются
  • Условие: данные для сравнения: [node:field-img-status], значение данных: Approve

Когда я пытаюсь добавить второе условие, чтобы проверить, опубликован ли узел в течение 24 часов, я не могу этого добиться. Когда я добавляю strtotime("-1 day"), я получаю сообщение об ошибке:

Неправильный формат даты. Укажите дату в формате 2017-05-10 08:17:18.

Я пробовал date('Y-m-d h:i:s',strtotime("-1 day")), но мне это не удалось.

Теперь я пробую еще один способ добиться этого, используя правила представлений, которые предлагаются в этот ответ на вопрос о "Как создайте правило Drupal для проверки (в cron) поля даты и, если передано, установите статус поля на завершено?'.


person santosh    schedule 09.05.2017    source источник


Ответы (2)


Ниже приведен план того, как я заставлю это работать...

Шаг 1: Создайте одно электронное письмо для каждого опубликованного узла.

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

  • Используйте Правила, чтобы создать правило с действием правил, которое состоит из "цикла правил". », в котором его «элементы списка» на самом деле являются списком узлов, которые вы хотите включить в свою электронную почту позже. Чтобы создать этот цикл правил, используйте правила представлений в сочетании с Представления отображают тип "Правила представлений" для созданного вами представления. См. мой ответ на "Как передать аргументы представлению из правил?" для более подробной информации о том, как использовать Правила просмотра.

  • Для каждого элемента списка в цикле правил на предыдущем шаге у вас есть доступ ко всем данным для каждого столбца в созданном вами представлении. Используя эти данные, вы можете добавить дополнительное действие правил (в том же цикле правил), чтобы отправить соответствующее электронное письмо об обрабатываемом узле.

Шаг 2. Сгруппируйте все электронные письма в одно электронное письмо.

Очевидно, что на предыдущем шаге создается одно сообщение электронной почты для каждого узла, опубликованного за последние 24 часа. Если у вас есть только несколько узлов, это может не быть проблемой для беспокойства. Но если у вас есть десятки (или больше?) таких узлов, вы можете захотеть объединить все такие электронные письма в одно электронное письмо, которое содержит (в теле сообщения) полный список узлов.

Возможное решение для реализации такой консолидации похоже на то, что показано в примере правил, включенном в мой ответ на «Как объединить все значения токена списка в одном поле в цикле правил?". В вашем случае вы можете заставить его работать так:

  1. Добавьте новую переменную Rules, которая будет использоваться позже как часть тела электронной почты, до начала вашего цикла. Скажем, вы называете переменную nodes_list_var_for_email_body.
  2. В вашем цикле для каждой итерации добавляйте или добавляйте значение для каждого «элемента списка» к этой переменной nodes_list_var_for_email_body.
  3. Переместите действие «Правила», чтобы отправить электронное письмо за пределы цикла и после завершения цикла. И точно настройте детали (конфигурацию) вашего (нового) действия правил «отправить электронное письмо». При этом вы сможете выбрать токен для nodes_list_var_for_email_body, чтобы добавить его в любое место вашего сообщения электронной почты.

Шаг 3. Запланируйте ежедневное выполнение вашего правила

Используйте Правила один раз в день, чтобы запланировать ежедневное выполнение вашего правила. См. мой ответ на "Как ограничить выполнение правила отправки электронной почты только один раз в день?" для более подробной информации об этом модуле.

Вуаля, готово...

person Pierre.Vriens    schedule 18.08.2017
comment
Извините за поздний комментарий... Спасибо за уделенное время и комментарий. Я добился этого так же, как вы упомянули. - person santosh; 21.08.2017
comment
@santosh не нужно извиняться, спасибо за принятие. Кстати, вы не хотите воспользоваться возможностью заработать этот значок? - person Pierre.Vriens; 21.08.2017

Вот как бы я этого добился:

  1. Сделайте какое-нибудь представление, в котором будут перечислены все узлы, созданные сегодня.

  2. Сделайте конечную точку (из моего модуля, посмотрите: https://api.drupal.org/api/drupal/modules%21system%21system.api.php/function/hook_menu/7.x) Это вызовет это представление и получить этот список узлов (т.е. с views_get_view_result : https://api.drupal.org/api/views/views.module/function/views_get_view_result/7.x-3.x ), просмотрите список, составьте электронное письмо и отправьте его.

  3. Затем я бы установил задание cron для вызова этой конечной точки в конце каждого дня.

person MilanG    schedule 11.05.2017