Задача: добавить поля "комментарий киента к заказу", "телефон", "название службы доставки", "название способа оплаты", "полный адрес клиента" в шаблон письма-уведомления о новом заказе
Идея решения:
1. Добавляем новые поля в шаблон почтового события SALE_NEW_ORDER.
Поля добавляем в текст шаблона в виде
2. Добавляем в систему обработчик события "перед отправкой почтового уведомления о новом заказе".
3. В обработчике события заполняем добавленные в шаблон поля
Решение
Шаг 1. Шаблон SALE_NEW_ORDER
В шаблон добавил такой текст
Шаги 2 и 3. Код
в /bitrix/php_interface/init.php
вписал такой код
Полезные ссылки
Идея решения:
1. Добавляем новые поля в шаблон почтового события SALE_NEW_ORDER.
Поля добавляем в текст шаблона в виде
#<имя поля># |
3. В обработчике события заполняем добавленные в шаблон поля
Решение
Шаг 1. Шаблон SALE_NEW_ORDER
В шаблон добавил такой текст
... Контактный телефон: #PHONE# Комментарий: #ORDER_DESCRIPTION# Служба доставки: #DELIVERY_NAME# Способ оплаты: #PAY_SYSTEM_NAME# Адрес доставки: #FULL_ADDRESS# ... |
в /bitrix/php_interface/init.php
вписал такой код
//-- Добавление обработчика события AddEventHandler("sale", "OnOrderNewSendEmail", "bxModifySaleMails"); //-- Собственно обработчик события function bxModifySaleMails($orderID, &$eventName, &$arFields) { $arOrder = CSaleOrder::GetByID($orderID); //-- получаем телефоны и адрес $order_props = CSaleOrderPropsValue::GetOrderProps($orderID); $phone=""; $index = ""; $country_name = ""; $city_name = ""; $address = ""; while ($arProps = $order_props->Fetch()) { if ($arProps["CODE"] == "PHONE") { $phone = htmlspecialchars($arProps["VALUE"]); } if ($arProps["CODE"] == "LOCATION") { $arLocs = CSaleLocation::GetByID($arProps["VALUE"]); $country_name = $arLocs["COUNTRY_NAME_ORIG"]; $city_name = $arLocs["CITY_NAME_ORIG"]; } if ($arProps["CODE"] == "INDEX") { $index = $arProps["VALUE"]; } if ($arProps["CODE"] == "ADDRESS") { $address = $arProps["VALUE"]; } } $full_address = $index.", ".$country_name."-".$city_name.", ".$address; //-- получаем название службы доставки $arDeliv = CSaleDelivery::GetByID($arOrder["DELIVERY_ID"]); $delivery_name = ""; if ($arDeliv) { $delivery_name = $arDeliv["NAME"]; } //-- получаем название платежной системы $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["DELIVERY_NAME"] = $delivery_name; $arFields["PAY_SYSTEM_NAME"] = $pay_system_name; $arFields["FULL_ADDRESS"] = $full_address; } |
Полезные ссылки
Прототип кода взял из комментария к статье "Артикул в уведомлении о заказе" Спасибо автору События интернет-магазина Тут помог раздел "События связанные с отправкой почтовых шаблонов" Курс разработчика, раздел "Обработка событий" Документация для разработчика, раздел "Обработка событий" Тема форума "Обработка событий" |