Битрикс – добавляем параметр в почтовое событие

В данной статье вы поймете как добавить новые параметры со значениями, сразу перед отправкой.

Как в Битриксе добавить свой параметр перед отправкой письма

Почтовая система битрикса действительно дает много возможностей для реализации самых разных сценариев. Давайте рассмотрим этот большой код и разберем по порядку как он работает:

//формируем ссылку для трэка в письме
AddEventHandler("main", "OnBeforeEventAdd", array("MyClass", "OnBeforeEventAddHandler"));
class MyClass
{
	function OnBeforeEventAddHandler(&$event, &$lid, &$arFields)
	{
		if ($event == 'SALE_ORDER_TRACKING_NUMBER'){
			CModule::IncludeModule('sale');
			$ORDER_ID = $arFields['ORDER_ID'];
			if ($arOrder = CSaleOrder::GetByID($ORDER_ID)){
				$postID = $arOrder['DELIVERY_ID'];
			}
			if ($postID == 19) {
				$url = 'tracking#';
			} elseif ($postID == 20) {
				$url = '?actc=';
			}
			$arFields["DELIVERY_TRACKING_URL"] = $url.$arFields["ORDER_TRACKING_NUMBER"];
		}
	}
}

Сам код добавим в файл событий init.php, где его найти вы знаете). Если его нет, создайте.
Первые строчки регистрируют событие, нас интереует – OnBeforeEventAdd. Перед отправкой каждого почтового события будет выполняться данный код. Обратите внимание, что в самой функции есть параметры, которые мы можем не только получить но и менять.

Следующий шаг это ограничение – выполняем код только для события с таким кодом:
if ($event == ‘SALE_ORDER_TRACKING_NUMBER’){

Далее идёт код, который просто по номеру заказа, определяет службу доставки (DELIVERY_ID) – на данном этапе логика вашего кода может быть какой угодно, просто в этом примере мы работаем заказами.

Обратите внимание на последнюю строчку кода:

$arFields["DELIVERY_TRACKING_URL"] = $url.$arFields["ORDER_TRACKING_NUMBER"];

DELIVERY_TRACKING_URL – это и есть наше новое свойство, которое в почтовом шаблоне вы разметите как #DELIVERY_TRACKING_URL#.

В чем преимущество данного метода? Даже не зная, где именно написана логика, вы всё равно влияете на дополнительные параметры не нарушая работы предыдущего кода.

Код не претендует на идеальность, я лишь хотел показать вам такую возможность. Если у вас есть что добавить – пишите в комментариях. Делитесь знаниями 🙂

Если на вашем сайте необходимо настроить почтовую систему или доработать проект - обращайтесь

автор: Dmitriy

З 2011 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *