xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

Я уже писал как рассылать новые материалы с помощью 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
Похожие записи

Комментарии RSS

Какой друпал сложный-то

kalabro
Не могу это не оставить здесь :)
Кривая изучения Друпала

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

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

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

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

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

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

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

Здравствуйте, при добавлении 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)

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

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

пользуйтесь первым способом

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

добавьте в rules новое условие "Execute custom PHP code" в котором проверьте число записей в view. пример — http://xandeadx.ru/blog/drupal/739

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

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

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

На 7-м шаге у меня нет Node в типах: http://c2n.me/3erWcMQ
Скажите, в чем может быть ошибка?

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

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

переустановите модуль 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
Как повлиять на внешний вид письма?

Вот собственно моя первая рассылка: http://womenhobby.com/ru/content/novye-materialy-za-13042015-20042015#ov...
Ужас... как сделать для нее нормальные вид, как по ссылке выше? Чтобы с картинками )
Табличная форма не обязательна. Хоть бы списком.

Попробую. Спасибо!

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

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

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

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

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании