Помощь Битрикс
Макросы в рассылке
Оригинал статьиВ файле /bitrix/php_interface/init.php храняться обработччики выполняющихся событий. В этот файл необходимо добавить следующий код:
- // регистрируем обработчик
- AddEventHandler("subscribe", "BeforePostingSendMail", Array("CatchSubscriter", "beforePostingSendMailHandler"));
- class CatchSubscriter{
- // создаем обработчик события "BeforePostingSendMail"
- function beforePostingSendMailHandler(&$arFields){
- //$USER_NAME = "Подписчик";
- //Попробуем найти подписчика.
- $rs = CSubscription::GetByEmail($arFields["EMAIL"]);
- if($ar = $rs->Fetch()){
- //echo "<p>[</p>";
- //print_r($ar);
- //echo "<p>]</p>";
- $arFields["BODY"] = str_replace("#CONFIRM_CODE#", $ar["CONFIRM_CODE"], $arFields["BODY"]);
- $arFields["BODY"] = str_replace("#ID#", $ar["ID"], $arFields["BODY"]);
- $arFields["BODY"] = str_replace("#EMAIL#", $ar["EMAIL"], $arFields["BODY"]);
- }
- //$arFields["BODY"] = str_replace("#NAME#", $USER_NAME, $arFields["BODY"]);
- return $arFields;
- }
- }
Здесь в функции AddEventHandler("subscribe", "BeforePostingSendMail", Array("CatchSubscriter", "beforePostingSendMailHandler"));
Первый аргумент — название используемого модуля подписки и рассылок.
Второй аргумент — название события.
Третий аргумент — массив с параметрами обработчика события.
Так при возникновении события BeforePostingSendMail т. е перед самой отправкой письма извлекаются почтовый адрес и текст письма из переменной $arFields. Зная email на который отправляется письмо — устанавливаем личность получателя, его ID и т. п. Текст письма проверяем на наличие ключей заданного формата (#EMAIL#, #ID#), и тут же их подменяем на нужные значения. Не трудно догадаться, что стандартный письмо рассылки можно расширить и другими парметрами.
Чтобы проверить работу можно отправить рассылку с следующим содержанием:
- <p>email: #EMAIL#</p>
- <p>id: #ID#</p>
- <p>confirm code: #CONFIRM_CODE#"</p>
- <a href="http://www.tetrapolis.ru/service/edit_subscribe.php?ID=#ID#&CONFIRM_CODE=#CONFIRM_CODE#">Сменить адрес подписки</a>
- <a href="http://www.tetrapolis.ru/service/edit_subscribe.php?ID=#ID#&CONFIRM_CODE=#CONFIRM_CODE#&action=unsubscribe">Отписаться</a>
Ссылки должны вести на страницу с компонентом редактирования рассылки.