Drupal → Рассылка списка новых материалов за день/неделю/месяц с помощью Simplenews и Rules (способ 2)

20.12.2013

Я уже писал как рассылать новые материалы с помощью Simplenews и Simplenews Scheduler. Способ довольно неординарный и с одним минусом — содержимое рассылки генерируется динамически и нет возможности например открыть рассылку месячной давности и посмотреть новинки за ту неделю. Поэтому предлагаю способ рассылки новых материалов без такого недостатка:

  1. Включаем модули Simplenews, Simplenews rules, Rules, Views, Entity API.

  2. На странице admin/config/services/simplenews добавляем новую категорию рассылки "Новые материалы".

  3. Создаём представление Новые материалы (new_nodes) без дисплеев:

  4. Добавляем в представление фильтр по дате создания материала с оператором Is greater than и значением -7 day:

  5. Создаём новый Rules с именем Рассылка новых материалов и реакцией на Cron maintenance tasks are performed:

  6. Добавляем условие Execute custom PHP code с кодом из прошлого поста:

    if (date('W', REQUEST_TIME) != variable_get('new_nodes_last_week_send')) {
      variable_set('new_nodes_last_week_send', date('W', REQUEST_TIME));
      return TRUE;
    }
  7. Добавляем действие Create a new entity с настройками как на скриншоте:

  8. C помощью трёх действий Set a data value заполняем:
    newsletter:body:value = <?php echo views_embed_view('new_nodes'); ?> (скриншот)
    newsletter:body:format = Full HTML (скриншот)
    newsletter:field-simplenews-term = Новые материалы (скриншот)

  9. Добавляем действие Save entity с селектором newsletter и включённой опцией Force saving immediately:

  10. Добавляем действие Send newsletter с селектором newsletter:

Profit.

Получившийся Rules:

Экспорт рулса.

Написанное актуально для
Simplenews 7.x-1.x
Похожие записи

Комментарии

@kalabro чего только не сделаешь, чтобы не писать свой модуль

Гость
26.12.2013, 09:46

Если Set a data value выбираешь newsletter:body:format, выдает ошибку The selected data property doesn't support writing. В чем дело?

Включаем модули Simplenews, Simplenews rules, Rules, Views и dev версию Entity API

Гость
26.12.2013, 10:36

К предыдущему комментарию. Установка dev-версии модуля entity решила проблему.

У моей жены блог, так вот такая конструкция совершенно не устраивает.
Во-первых, она может создать ноду, но не опубликовать ее. Потом еще создать ноду и опубликовать ее. Я сделал привязку ко всем нодам по ид в отдельной табличке.
Поэтому пишу свой модуль для подписки по email, надеюсь до НГ опубликовать на Хабре.

добавьте в views фильтр по статусу ноды

Алексей
17.01.2014, 02:54

На емаил картинки не приходят, только ссылки и текст.

Здравствуйте, при добавлении new action выдает ошибку :
Data selector newsletter:body:value for parameter data is invalid.
При этом в спсике data selector есть только элементы начинающиеся с site:
деал drush up
после того как не помогло - поставил entity-7.x-1.x-dev , отключил включил модули - без результата .... даже, кажется, в списке data selector стало меньше элементов.
Пожалуйста, помогите ....

Все прошло. мой касяк.
при выполнении "Добавляем действие Create a new entity с настройками как на скриншоте:"
не вся картинка влезла в экран, я не заметил и не поменял имя в самом низу(кстати на скриншоте - с ошибкой, там не лишняя буква т newslTetter)

Огромное спасибо за подробную статью, очень выручили.

Гость
30.06.2014, 19:50

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

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

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

Где можно подправить шаблон рассылки?

Нет ли случайно у вас статьи как с помощью рулес и флаг настроить правило для подписки на обновление материалов?

Node в друпале переводится как Материал

Спасибо! Так и сделала. Но у меня нет далее в "Типе материала": Simplenews. Вот что у меня: http://c2n.me/3eWM0PH
У меня вообще нет возможности создавать новую рассылку. Есть возможность категорию рассылки только создать.
Может что-то в настройках? Извините если глупые вопросы, осваиваю Simplenews.

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

Экшен "Send newsletter" должен начать рассылку без запуска крона

Ясно.
Но все равно есть вопросы.
1. А по какому расписанию будет рассылать екшен "Send newsletter"?
2. Пользователей надо как-то подписать на рассылку или она разошлется всем зарегистрированным и активным пользователям?
3. Попыталась запустить крон Друпала при помощи системного крона руками, чтобы проверить работу. Вот какое сообщение вижу: http://clip2net.com/s/3gjCZQx Хотя этот вопрос, скорее, не имеет отношение к теме обсуждения )

1. я вам соврал, рассылка идёт действительно по крону (rules навешен на событие Cron
maintenance tasks are performed).
2. В админке simplenews можно подписать пользователей или вывести на страницы сайта блок с подпиской
3. крон надо запускать с помощью wget или curl. не забывайте указать в url параметр cron_key

У меня сработало! Супер! Есть недочеты. но работает и я рада!

Внешний вид письма.
Я сделала представление следующего вида: http://c2n.me/3gqrXIJ
А письмо приходит такого вида. Сначала текст ссылок, а потом ссылки: http://c2n.me/3gqsHFp
Как повлиять на внешний вид письма?

Гость
19.05.2015, 14:47

Добрый день!
Воспользовалась вашим советом выше: http://xandeadx.ru/blog/drupal/764
Теперь мои письма прихордят в виде html
Если уже после генерации рассылки на сайте зайти в ее редактирование и изменить тип текстового редактора на "Редактирование содержимого Full HTML", то рассылка на сайте становится красивого вида.
Но проблема в том, что на этот момент она уже разослана в виде HTML.
Хотя в п.8 описания сказано установить newsletter:body:format в Full HTML, что мной и сделано. Правда этот тип у меня назвается "Редактирование содержимого Full HTML"
В чем может быть проблема у меня?

Здравствуйте.
Подскажите, как сделать так чтобы в body сообщения оставались спецсимволы. На каждой ссылке проставлены utm метки, и знак & приходит в форме & в ссылке.

Знак & приходит в ссылках как amp; а не &

Андрей
04.03.2016, 17:26

Попытался разобраться с кодом PHP в котором проверялась бы число число записей в view. не получилось не могли бы помочь.

Евгений
17.10.2017, 09:29

а как тут пользователей указать, кому эту рассылку засылать?

Никак. Пользователь сам решает на что ему подписаться.

Евгений
18.10.2017, 04:18

Жалко конечно, однако все равно спасибо за полезную статью

Добавить комментарий