Уже не однократно просили опубликовать информацию по реализации автоматического формирования рассылки. Постараюсь как можно подробнее описать...
Что мы имеем: Модуль Рассылки в котором у нас будут:
- храниться рубрики рассылки;
- формироваться автоматические рассылки;
- храниться информация о подписчиках;
- рассылаться почта.
Итак начнем.
Создания скрипта автоматической рассылки.
Все наверное видели при создании рассылки в автоматическом виде видели один параметр: Доступные шаблоны.
1. Так что такое шаблон?
2. Где его взять?
3. Как он должен выглядеть?
Начнем по порядку:
1. Шаблон - это PHP скрипт который будет формировать в определенное время текст письма рассылки.
2. В старых демках был пример такого шаблона. Этот шаблон нам и надо будет создать.
3. НУ а теперь и сам код этого скрипта:
Скрипты шаблонов должны лежать тут: bitrix/php_interface/subscribe/templates/Любое_имя_раздела_для_вашего_шаблона/
Структура содержимого:
lang/
lang/ru/
lang/ru/description.php
lang/en/
lang/en/description.php
description.php
template.php
Листинг файла lang/ru/description.php:
Листинг файла description.php:
А вот на листинге последнего файла уделю больше внимания т.к. этот файл и будет играть всю основную роль.
Листинг файла template.php:
Все шаблоны у нас созданы.
Создание автоматической рассылки.
Заходим в "Панель управления -> Сервисы -> Рассылки -> Список рассылок" и создаем новую рассылку которая будет у нас формироваться автоматически.
При создании новой рассылки ставим галочку на поле "Автоматическая" после чего у нас активируется 2-я вкладка "Автоматическая генерация".
Во второй вкладке указывается период генерации рассылок, шаблон по которому будет производится рассылка и E-Mail от имени которого будет происходить рассылка.
Сохраняем нашу рассылку.
Последний шаг - тестирование.
Открываем нашу созданную рассылку и нажимаем "Проверить", на открывшейся странице указываем период за который необходимо выбрать данные и смотрим результат генерации.
Надеюсь моя статья поможет вам в решении ваших вопросов.
Что мы имеем: Модуль Рассылки в котором у нас будут:
- храниться рубрики рассылки;
- формироваться автоматические рассылки;
- храниться информация о подписчиках;
- рассылаться почта.
Итак начнем.
Создания скрипта автоматической рассылки.
Все наверное видели при создании рассылки в автоматическом виде видели один параметр: Доступные шаблоны.

1. Так что такое шаблон?
2. Где его взять?
3. Как он должен выглядеть?
Начнем по порядку:
1. Шаблон - это PHP скрипт который будет формировать в определенное время текст письма рассылки.
2. В старых демках был пример такого шаблона. Этот шаблон нам и надо будет создать.
3. НУ а теперь и сам код этого скрипта:
Скрипты шаблонов должны лежать тут: bitrix/php_interface/subscribe/templates/Любое_имя_раздела_для_вашего_шаблона/
Структура содержимого:
lang/
lang/ru/
lang/ru/description.php
lang/en/
lang/en/description.php
description.php
template.php
Листинг файла lang/ru/description.php:
<? $MESS ['news_template_name'] = "Дайджест новостей"; $MESS ['news_template_desc'] = "Шаблон генерации дайджеста новостей."; ?> |
Листинг файла description.php:
<? $arTemplate = Array( "NAME"=>GetMessage("news_template_name"), "DESCRIPTION"=>GetMessage("news_template_desc") ); ?> |
А вот на листинге последнего файла уделю больше внимания т.к. этот файл и будет играть всю основную роль.
Листинг файла template.php:
<?//Запретим прямой вызов скрипта if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); //определяем глобальные переменные и присваиваем им первоначальные значения. global $SUBSCRIBE_TEMPLATE_RESULT; $SUBSCRIBE_TEMPLATE_RESULT=false; global $SUBSCRIBE_TEMPLATE_RUBRIC; $SUBSCRIBE_TEMPLATE_RUBRIC=$arRubric; global $APPLICATION; //определяем стилистику нашего письма ?> <STYLE type=text/css> .text {font-family: Verdana, Arial, Helvetica, sans-serif; font-size:12px; color: #1C1C1C; font-weight: normal;} .newsdata{font-family: Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold; color: #346BA0; text-decoration:none;} H1 {font-family: Verdana, Arial, Helvetica, sans-serif; color:#346BA0; font-size:15px; font-weight:bold; line-height: 16px; margin-bottom: 1mm;}/*Текст заголовка*/ </STYLE> <P>Добрый день!</P> <!-- Подключаем компонент который будет из инфоблока $IBLOCK, из раздела $arRubric только новые элементы --> <P><?$APPLICATION->IncludeComponent( "bitrix:subscribe.news", ".default", Array( "SITE_ID" => "ru", "IBLOCK_TYPE" => "news", "ID" => $IBLOCK, "SECTION_ID" => $arRubric, "INCLUDE_SUBSECTIONS" => "Y", "SORT_BY" => "ACTIVE_FROM", "SORT_ORDER" => "DESC" ), false );?></P> <P>Всего хорошего</P><? //Получаем дату и время в правильном формате. $new_date = $DB->FormatDate(date("d.m.Y H:i:s"), "DD.MM.YYYY HH:MI:SS", CSite::GetDateFormat("FULL", "ru")); //вы конечно могли подучать, что просто подключением компонента вопрос решится, но не тут-то было, надо теперь полученные данные передать обратно модулю расслка if($SUBSCRIBE_TEMPLATE_RESULT) return array( //Заголовок письма "SUBJECT"=>$arRubric["NAME"] //Тип сообщения ,"BODY_TYPE"=>"html" //Кодировка письма ,"CHARSET"=>"Windows-1251" ,"DIRECT_SEND"=>"Y" //E-Mail от имени которого будет производится рассылка ,"FROM_FIELD"=>$arRubric["FROM_FIELD"] //Автоматическая отправка ,"AUTO_SEND_FLAG"=>"Y" //Дата и время отправки письма ,"AUTO_SEND_TIME"=>$new_date ); else return false; ?> |
Все шаблоны у нас созданы.
Создание автоматической рассылки.
Заходим в "Панель управления -> Сервисы -> Рассылки -> Список рассылок" и создаем новую рассылку которая будет у нас формироваться автоматически.
При создании новой рассылки ставим галочку на поле "Автоматическая" после чего у нас активируется 2-я вкладка "Автоматическая генерация".
Во второй вкладке указывается период генерации рассылок, шаблон по которому будет производится рассылка и E-Mail от имени которого будет происходить рассылка.
Сохраняем нашу рассылку.
Последний шаг - тестирование.
Открываем нашу созданную рассылку и нажимаем "Проверить", на открывшейся странице указываем период за который необходимо выбрать данные и смотрим результат генерации.
Надеюсь моя статья поможет вам в решении ваших вопросов.
Как рассылаете: Агентом или кроном?
вот скрипт:
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
// global $SUBSCRIBE_TEMPLATE_RUBRIC;
// $SUBSCRIBE_TEMPLATE_RUBRIC=$arRubric;
// new part from ---------------------------
//global $SUBSCRIBE_TEMPLATE_RESULT;
//$SUBSCRIBE_TEMPLATE_RESULT=false;
// пришлось заккоментировать global (см выше и Ваши и те, что были в первоначальном шаблоне) , т.к. с ними не шла проверка --------------------------------------------------------------------------------------------------------
global $APPLICATION;
?>
<style type="text/css">
.text {font-family: Verdana, Arial, Helvetica, sans-serif; font-size:12px; color: #1C1C1C; font-weight: normal;}
.newsdata{font-family: Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold; color: #346BA0; text-decoration:none;}
h1 {font-family: Verdana, Arial, Helvetica, sans-serif; color:#346BA0; font-size:15px; font-weight:bold; line-height: 16px; margin-bottom: 1mm;}
</style>
<p>Добрый день!</p>
<p> <?
$SUBSCRIBE_TEMPLATE_RESULT = $APPLICATION->IncludeComponent(
"bitrix:subscribe.news",
"",
Array(
"SITE_ID" => "s1",
"IBLOCK_TYPE" => "news",
"ID" => "3",
// "SECTION_ID" => $arRubric,
// "INCLUDE_SUBSECTIONS" => "Y",
"SORT_BY" => "ACTIVE_FROM",
"SORT_ORDER" => "DESC"
)
);
?> </p>
<p>Всего хорошего</p>
<?
//Получаем дату и время в правильном формате.---------------------------------------
// $new_date = $DB->FormatDate(date("d.m.Y H:i:s"), "DD.MM.YYYY HH:MI:SS", CSite::GetDateFormat("FULL", "ru"));
// end вставки -----------------------------------------------
if($SUBSCRIBE_TEMPLATE_RESULT)
return array(
"SUBJECT"=>$SUBSCRIBE_TEMPLATE_RUBRIC["NAME"],
"BODY_TYPE"=>"html",
"CHARSET"=>"Windows-1251",
"DIRECT_SEND"=>"Y",
"FROM_FIELD"=>$SUBSCRIBE_TEMPLATE_RUBRIC["FROM_FIELD"],
//Автоматическая отправка
"AUTO_SEND_FLAG"=>"Y"
//Дата и время отправки письма
// ,"AUTO_SEND_TIME"=>$new_date
);
else
return false;
?>
Никакие основные файлы я не трогала, только то, что касается рассылок....B2WK
в файле template.php закомментировала
//global $APPLICATION;
После этого я никуда не могла попасть при входе, кроме этого места.
Понятно, что ошибка, но почему я на нее выходила ?
Убрала // и все наладилось
код:
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
global $SUBSCRIBE_TEMPLATE_RUBRIC;
$SUBSCRIBE_TEMPLATE_RUBRIC=$arRubric;
global $APPLICATION;
?>
<STYLE type=text/css>
.text {font-family: Verdana, Arial, Helvetica, sans-serif; font-size:12px; color: #1C1C1C; font-we
.newsdata{font-family: Arial, Helvetica, sans-serif; font-size:12px; font-weight:bold; color: #346
H1 {font-family: Verdana, Arial, Helvetica, sans-serif; color:#346BA0; font-size:15px; font-weight
</STYLE>
<P>123</P>
<P><?
echo("test test test");
?></P>
<P>456</P><?
return array(
"SUBJECT"=>$SUBSCRIBE_TEMPLATE_RUBRIC["NAME"],
"BODY_TYPE"=>"html",
"CHARSET"=>"Windows-1251",
"DIRECT_SEND"=>"Y",
"FROM_FIELD"=>$SUBSCRIBE_TEMPLATE_RUBRIC["FROM_FIELD"],
);
?>
Второй ворос, а как сделать вложения файлов?
А вот интересует такой вопрос - как более детально отредактировать шаблон? Хотелось бы оформить рассылку в оригинальном стиле. Кто подскажет, куда смотреть?
Т.е. пропишите в HTML теле документа стили CSS для оформления письма в вашем стиле.
Интересно, как у вас получается использовать $arRubric в таком коде:
<P>Добрый день!</P> // что бы здесь было например <p>Новости выпуск № 24 (ID выпуска)от 1.08.2012 15:00
<P><?$APPLICATION->IncludeComponent(
проверяю в рассылках - есть доступный шаблон.
Заполняю папку файлами, в рассылках вкладка автоматическая генерация становится недоступной.
Что не так? Название файлов верное, содержание верное...