Блог Николая Семенцова

Партнер компании 1с-битрикс

Модуль рассылки создание своих переменных

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

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

fireshot_capture_320_-_kdcmos_-_redaktirovanie_vypuska_18_-_kdc_ae-studio_ru_bitrix_admin_posting_edit_php_id18langru_0.jpg

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




Помогла заметка? Жмите кнопки ниже


ВКонтакт Facebook Google Plus Одноклассники Twitter Livejournal Liveinternet Mail.Ru





comments powered by Disqus