Всем привет, не давно приходилось решать такую задачу, необходимо было сделать именные рассылки с зависимостью от пола человека.
Рассылка проходила по людям которые входят в группу 'Пользователи на рассылку'.
Для того что бы каждое письмо было уникальным и обращено к конкретному человеку из группы , я создал файл init.php в папке /bitrix/php_interface/ .
В нем я настроил функцию-обработчки отвечающюю за обработку письма перед отправкой BeforePostingSendMail .
Вот собственно мой код в этом файле с комментариями
// регистрируем обработчик AddEventHandler("subscribe", "BeforePostingSendMail", Array("MyClass", "BeforePostingSendMailHandler")); class MyClass { // создаем обработчик события "BeforePostingSendMail" function BeforePostingSendMailHandler($arFields) { //Попробуем найти подписчика. $USER_NAME = $arFields["EMAIL_EX"]["USER_ID"] ; $rsUser = CUser::GetByID($arFields["EMAIL_EX"]["USER_ID"]); if($arUser = $rsUser->Fetch()) { if ($arUser["PERSONAL_GENDER"] == "M") { // если пол мужской то вначале текста будет фраза $begin = "Уважаемый"; } else { //если пол женский то вначале будет фраза $begin = "Уважаемая"; } $USER_NAME = $begin." ".$arUser["LAST_NAME"]." ".$arUser["NAME"]." ".$arUser["SECOND_NAME"] ; } // замена #NAME# на нашу переменную $USER_NAME $arFields["BODY"] = str_replace("#NAME#", $USER_NAME, $arFields["BODY"]); return $arFields; } }
В данном случае мне необходимо было только создать переменную #NAME# которую мы будем ставить в тело письма . Например мы можем создать переменую отвечающую за должность человека и выводить ее в теле шаблона такой фразой #$PROFESSION#.
AddEventHandler("subscribe", "BeforePostingSendMail", Array("MyClass", "BeforePostingSendMailHandler")); class MyClass { function BeforePostingSendMailHandler($arFields) { //Попробуем найти подписчика. $USER_NAME = $arFields["EMAIL_EX"]["USER_ID"] ; $rsUser = CUser::GetByID($arFields["EMAIL_EX"]["USER_ID"]); if($arUser = $rsUser->Fetch()) { $PROFESSION = $arUser["PERSONAL_PROFESSION"] ; } $arFields["BODY"] = str_replace("#$PROFESSION#", $PROFESSION, $arFields["BODY"]); return $arFields; } }
здесь доступен списко переменных которые мы можем использовать .
Опубликовано: 9 июня 2011
|
|