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

10.09.2013

Задача — с помощью Simplenews периодически рассылать списки новых материалов, появившихся на сайте.

Для решения понадобятся модули Simplenews, Simplenews Scheduler, Views и PHP filter (в ядре).

  1. Создаём представление new_nodes без дисплеев и без фильтров:

  2. Создаём новую рассылку с форматом ввода PHP code и кодом:
    <?php
    $prev_send_timestamp = variable_get('new_nodes_prev_send_timestamp', 0);
    $send_timestamp = variable_get('new_nodes_send_timestamp', time());
    $view = views_get_view('new_nodes');
    $view->set_display('default');
    $view->add_item($view->current_display, 'filter', 'node', 'created', array(
      'operator' => 'between',
      'value' => array(
        'min' => format_date($prev_send_timestamp, 'custom', 'Y-m-d H:i:s'),
        'max' => format_date($send_timestamp, 'custom', 'Y-m-d H:i:s'),
      ),
    ));
    $view->execute();
    echo $view->preview('default');
    ?>

  3. В вкладке Newsletter выбираем пункт Send newsletter according to schedule, указываем Sending interval (интервал рассылки) и Interval frequency (частота интервала). В поле Additionally only create newsletter edition if the following code returns true пишем код:
    variable_set('new_nodes_prev_send_timestamp', variable_get('new_nodes_send_timestamp', 0));
    variable_set('new_nodes_send_timestamp', time());
    return TRUE;

Profit.

Вместо PHP кода можно использовать модуль, вставляющий отрендеренное представление в текст — Views Insert.

Способ рассылки новых материалов с помощью Simplenews и Rules.

Подробнее про программную работу с Views.

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

Комментарии

Гость
11.09.2013, 11:57

А тип материалов можно ограничить для рассылки или например если в ноде нет галки у поля то не включать в рассылку?

добавьте в views фильтр по типу материала

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

Гость
25.12.2013, 22:41

Что такое частота интервала? Если, например, интервал час, а частота равна 1, что происходит?

Гость
25.12.2013, 22:54

Если:
Start sending on - 2013 Дек 26 00-23
Sending interval - week
Interval frequency - 3
Первая рассылка произойдет по крону в 00-23 26го числа. А в течение недели еще одна. Последняя через неделю. Т.е. всего три. Так что-ли?

Сергей
04.02.2014, 00:35

А можно ли сделать так, чтобы при подписке в simplenews пользователь мог бы выбрать термин словаря, присутствующий в ноде (допустим в ноде есть перечень магазинов из словаря) и в дальнейшем рассылка будет идти только по нодам, которые имеют определенный магазин, который выбрал пользователь при подписке?

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

Подскажите, возможно ли темизировать через tpl.php вывод вьюса вставленного с помощью Views Insert? Положил как обычно в папку дефолтной темы, на сайте все работает, но отправленном сообщении изменений нет...

Сам себе отвечу ^
admin/config/system/mailsystem
Тема для обработки сообщений почты

2. Создаём новую рассылку с форматом ввода PHP code и кодом:

где создаем эту рассылку не подскажите?
здесь admin/config/services/simplenews только категорию можно создать

Спасибо за оперативный ответ. как я понял нужно создать отдельный тип материала, который будет с опцией Use as simplenews newsletter и за тем создать node с кодом из пункта 2 или эту опцию нужно поставить в материалах который будем рассылать?

Simplenews создаёт свой тип материала, ничего дополнительно создавать не нужно.

Ах вот в чем дело, у меня почему то не создался этот тип материала, поставлю на чистую версию Д, спасибо

Разобрался, в head views когда вставляете не переносите эти строки, нужно все в одну сбивать

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

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