В данной статье вы поймете как добавить новые параметры со значениями, сразу перед отправкой.
Как в Битриксе добавить свой параметр перед отправкой письма
Почтовая система битрикса действительно дает много возможностей для реализации самых разных сценариев. Давайте рассмотрим этот большой код и разберем по порядку как он работает:
//формируем ссылку для трэка в письме 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#.
В чем преимущество данного метода? Даже не зная, где именно написана логика, вы всё равно влияете на дополнительные параметры не нарушая работы предыдущего кода.
Код не претендует на идеальность, я лишь хотел показать вам такую возможность. Если у вас есть что добавить – пишите в комментариях. Делитесь знаниями 🙂