Свои поля заказа в почтовом шаблоне битрикс
Очень часто стандартных возможностей не хватает и требуется доработка сайта Битрикс, например, в нашем случае почтового шаблона о новом заказе в интернет-магазине. Возможности системы позволяют это сделать. По факту задача заключается в отправке дополнительных данных (Контактная информация, Полное имя (Ф.И.О), Контактный E-Mail, Контактный телефон, Адрес доставки, Комментарий к заказу), которых нет в обычном шаблоне.
Скачать пример файла init.php
Пример добавления своего поля в любой почтовый шаблон Битрикс
Первым делом готовим шаблон письма, редактируем нужный шаблон события SALE_NEW_ORDER:
Добавляем в верстке нужные нам поля, например, как-то так:
Контактная информация:
Полное имя (Ф.И.О): #FIO#
Контактный E-Mail : #EMAIL#
Контактный телефон: #PHONE#
Адрес доставки: #FULL_ADDRESS#
Комментарий к заказу: #ORDER_DESCRIPTION#
Готовим обработку в файле 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 = "";
$fio = "";
while ($arProps = $order_props->Fetch())
{
if ($arProps["CODE"] == "PHONE")
{
$phone = htmlspecialchars($arProps["VALUE"]);
}
if ($arProps["CODE"] == "FIO")
{
$fio = htmlspecialchars($arProps["VALUE"]);
}
if ($arProps["CODE"] == "EMAIL")
{
$email = htmlspecialchars($arProps["VALUE"]);
}
if ($arProps["CODE"] == "INDEX")
{
$index = $arProps["VALUE"];
}
if ($arProps["CODE"] == "ADDRESS")
{
$address = $arProps["VALUE"];
}
}
$full_address = $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;
$arFields["FIO"] = $fio;
}
Скачать пример файла init.php
В итоге довольный менеджер магазина получает такое письмо:
Ещё статьи:
15.02.2024
История о жадности или как клиент свободное место искал на сервере
Случилась у меня одна история с клиентом, который свободное место искал на сервере, но на самом деле это больше о жадности, но в итоге всё равно пришл...
ID: 466
08.11.2023
Хроники БУС упадка
На днях произошли очередные изменения в БУС битрикс. Полезный модуль bitrix.xscan включили в состав проактивной защиты и убрали из бесплатного сегмента...
ID: 465
26.07.2023
Kwork.com закрыл доступ для резидентов РФ
Доступ к выставлению услуг теперь ограничен "К сожалению, вынуждены сообщить, что резиденты РФ в настоящее время не могут использовать сайт Kwork...
ID: 463
Новые статьи в блоге:
27.11.2024
Ошибка при 1с обмене 502 Bad Gateway
Произошла ошибка на стороне сервера. Получен неизвестный статус импорта.
Обмен не выполнен. Ответ сервера: 502 Bad Gateway
ID: 540
20.11.2024
Задача для РНР, разработать Футбольный календарь
На первый взгляд задача кажется не сложной, но это не так. Нужно учитывать, что она займёт время, многие не успевают сделать в сроки.
ID: 538
20.11.2024
Нюансы обмена доставок один случай
Описание проблемы.
В сторону 1С синхронизацию доставок она налажена, информация записывается (проставляется тип доставки, зона доставки)
ID: 537