Все почтовые сообщения битрикса содержат плейхолделы, с номером заказа, именем заказавшего и т.д. Иногда требуется их заменить "не лету".
Битрикс разработчикам: как изменить значения в письме
26.07.2017
Рассмотрим вариант, когда на форме есть несколько разных полей с телефоном (Физ / ЮР лица), выбираем то, которое подходит под тип пользователя и помещаем его в результирующий массив.
Для этого нужно перехватить событие OnOrderNewSendEmail в файле /public_html/bitrix/php_interface/init.php:
AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails"); function bxModifySaleMails($orderID, &$eventName, &$arFields) { $arOrder = CSaleOrder::GetByID($orderID); //-- получаем телефоны и адрес $order_props = CSaleOrderPropsValue::GetOrderProps($orderID); $phone=""; while ($arProps = $order_props->Fetch()) { if ($arProps["CODE"] == "UL_DEL_PHONE") { $phone = htmlspecialchars($arProps["VALUE"]); } elseif($arProps["CODE"] == "FL_PERS_PHONE") { $phone = htmlspecialchars($arProps["VALUE"]); } elseif($arProps["CODE"] == "NR_FL_PERS_PHONE") { $phone = htmlspecialchars($arProps["VALUE"]); } } //-- получаем название платежной системы $arPaySystem = CSalePaySystem::GetByID($arOrder["PAY_SYSTEM_ID"]); $pay_system_name = ""; if ($arPaySystem) { $pay_system_name = $arPaySystem["NAME"]; } //-- добавляем новые поля в массив результатов $arFields["ORDER_DESCRIPTION"] = $arOrder["USER_DESCRIPTION"]; $arFields["PHONE"] = $phone; $arFields["PAY_SYSTEM_NAME"] = $pay_system_name; }
Еще о событиях можно почитать в официальной документации