В этой статье разберем, как добавить новые параметры со значениями перед отправкой письма в Битрикс. Это полезно, например, для автоматического формирования ссылки на трекинг заказа в зависимости от службы доставки.
Как добавить свой параметр перед отправкой письма
Почтовая система Битрикс позволяет гибко настраивать параметры писем. Рассмотрим пример кода, который добавляет ссылку на отслеживание заказа в зависимости от выбранной доставки.
Пример кода
AddEventHandler("main", "OnBeforeEventAdd", ["MyClass", "OnBeforeEventAddHandler"]);
class MyClass
{
public static 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вызывается перед отправкой письма, позволяя изменить параметры.
-
-
Проверка типа события
-
Код выполняется только для события
SALE_ORDER_TRACKING_NUMBER.
-
-
Определение службы доставки
-
По
ORDER_IDполучаем данные заказа и идентификатор доставки (DELIVERY_ID).
-
-
Формирование ссылки
-
В зависимости от
DELIVERY_IDгенерируется URL для отслеживания.
-
-
Добавление нового параметра
-
DELIVERY_TRACKING_URLстановится доступным в почтовом шаблоне как#DELIVERY_TRACKING_URL#.
-
Преимущества метода
-
Гибкость – можно добавлять любые параметры, не затрагивая основной код.
-
Безопасность – изменения не влияют на стандартную логику работы.
-
Удобство – параметры доступны в шаблонах писем.
Теперь вы знаете, как расширить функционал почтовых событий в Битрикс. Этот подход можно адаптировать под любые сценарии!