Всем привет, не давно приходилось решать такую задачу, необходимо было сделать именные рассылки с зависимостью от пола человека.
Рассылка проходила по людям которые входят в группу 'Пользователи на рассылку'.

Для того что бы каждое письмо было уникальным и обращено к конкретному человеку из группы , я создал файл 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
|
|
|