Что бы реализовать рассылку новинок каталога на email-ы пользователей, можно воспользоваться событием OnBeforeIBlockElementAdd и модулем subscribe
Отправка рассылки при создании нового элемента инфоблока
В целом, все просто:
- Создаем новую рассылку, штатными способами. Выбираем группу пользователей которой рассылать...рассылку
- Создаем страничку на сайте, на которой выводим новинки (именно новые элементы)- на эту страничку ссылаемся из письма
- Пишем обработчик в init.php который будет автоматически: менять статус подписки на "Черновик", выполнять рассылку на cron.
Менять статус рассылки на "Черновик" обязательно так как, после выполнения, рассылка перейдет в статус "Отправлено" и в следующий раз не сработает.
Использованные методы:
$cPosting->ChangeStatus - смена статуса
$cPosting->AutoSend($ID); - отправка рассылки на cron
Код для init.php
AddEventHandler('iblock', 'OnBeforeIBlockElementAdd', 'NewCatItem');
function NewCatItem(&$arFields)
{
$SITE_ID = 's1'; //ID сайта
$IBLOCK_ID = 12; //ID инфоблока
$ID = 4; //ID созданной рассылки
if ($arFields['IBLOCK_ID'] == $IBLOCK_ID)
{
CModule::IncludeModule('subscribe'); //Подключаем модуль рассылок
$cPosting = new CPosting(); // Получаем информацию о рассылке
$arFilter = Array(
"STATUS_ID" => $find_status_id //Получаем текущий статус рассылки
);
if ($STATUS = "S") { //Если в статусе S - отправлено
$cPosting->ChangeStatus($ID, "D"); //Меняем на D - черновик
}
$cPosting->AutoSend($ID); //Рассылаем
}
}