Поздравляю! Вы попали в архивный блог! Все новые материалы публикуются на hmdw.meX
Просмотров: 9402

Битрикс. Веб-форма и разные адресаты.

Всем привет!

Не так давно (а конкретно - год назад), я писал пост с примером реализации отправки почты из веб-формы в 1С-Битрикс разным адресатам. Сейчас возникла необходимость снова сделать подобное, только на более серьезном проекте где костыли с прописыванием адресов прямо в init.php не прокатят =)

Поэтому встречайте новый вариант реализации данного решения.

Приготовления:

Итак, будем считать что у нас уже готова веб-форма, почтовое событие и почтовый шаблон. В веб-форме есть возможность выбрать ДЦ (пусть будет Москва и Санкт-Петербург) и в зависимости от выбранного варианта результаты формы будут уходить на разные почтовые адреса.

1) Для начала скопируем почтовый шаблон (Настройки - Почтовые события - Почтовые шаблоны), для этого в контекстном меню конкретного шаблона выбираем - "добавить копию".

2) У скопированного почтового шаблона в настройках меняем адрес почты на который должно слаться сообщение для Санкт-Петербурга и в название добавляем спб (чтобы не спутаться).

3) Затем идем в настройки веб-формы (Сервисы - Веб-формы - Настройка форм) и на вкладке "дополнительно" снимаем галки с обоих почтовых шаблонов (отправкой мы будем управлять сами).

4) В веб-форме должен присутствовать вопрос "Выберите ДЦ" с символьным кодом DC и вариантами ответа MSK и SPB.

5) Открываем /bitrix/php_interface/init.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)); //Тут продолжение стандартной отправки с кастом шаблоном
	}
	}
}

Вот собственно и все =)

Если у вас появились какие то вопросы пишите их в комментариях - оперативно отвечу.

twitter.com facebook.com vkontakte.ru odnoklassniki.ru livejournal.ru yandex.ru
Теги:
Эта запись опубликована: Понедельник, 19 ноября 2012 в рубрике Web-разработка.

Оставьте комментарий!