Всем привет!
Не так давно (а конкретно - год назад), я писал пост с примером реализации отправки почты из веб-формы в 1С-Битрикс разным адресатам. Сейчас возникла необходимость снова сделать подобное, только на более серьезном проекте где костыли с прописыванием адресов прямо в init.php не прокатят =)
Поэтому встречайте новый вариант реализации данного решения.
Приготовления: Итак, будем считать что у нас уже готова веб-форма, почтовое событие и почтовый шаблон. В веб-форме есть возможность выбрать ДЦ (пусть будет Москва и Санкт-Петербург) и в зависимости от выбранного варианта результаты формы будут уходить на разные почтовые адреса.
1) Для начала скопируем почтовый шаблон (Настройки - Почтовые события - Почтовые шаблоны), для этого в контекстном меню конкретного шаблона выбираем - “добавить копию”.
2) У скопированного почтового шаблона в настройках меняем адрес почты на который должно слаться сообщение для Санкт-Петербурга и в название добавляем спб (чтобы не спутаться).
3) Затем идем в настройки веб-формы (Сервисы - Веб-формы - Настройка форм) и на вкладке “дополнительно” снимаем галки с обоих почтовых шаблонов (отправкой мы будем управлять сами).
4) В веб-форме должен присутствовать вопрос “Выберите ДЦ” с символьным кодом DC и вариантами ответа MSK и SPB.
5) Открываем /bitrix/php_interface/init.php и создаем свой обработчик перехватывающий почтовое событие.
Осторожно! Ошибка в синтаксисе в данном скрипте чревата выпадением пустой белой страницы с ошибкой php вместо вашего красивого сайта.
<?php
//...
// зарегистрируем функцию как обработчик двух событий
AddEventHandler('form', 'onAfterResultAdd', Array("MyFormClass","onAfterResultAddHandler"));
class MyFormClass
{
function onAfterResultAddHandler($WEB_FORM_ID, $RESULT_ID)
{
// действие обработчика распространяется только на форму с ID=41
if ($WEB_FORM_ID == 41) {
//Вытаскиваем значение ДЦ
$arAnswer = CFormResult::GetDataByID($RESULT_ID,array("DC"),$arResult,$arAnswer2);
$dc_value = $arAnswer['DC']['0']['VALUE']; //Тут значение ДЦ
if($dc_value=="MSK") $dc_value = 100; //100 - id почтового шаблона для Москвы
if($dc_value=="SPB") $dc_value = 101; //101 - id почтового шаблона для СпБ
//Почтовое событие
CFormResult::Mail($RESULT\_ID,intval($dc\_value)); //Тут продолжение стандартной отправки с кастом шаблоном
}
}
}
Вот собственно и все =) Если у вас появились какие то вопросы пишите их в комментариях - оперативно отвечу.
- Вперед
- Назад