Добавление дополнительных полей в почтовый шаблон Битрикс
от v2Team
Итак, что нам потребуется
- Добавляем обработчик события
- Добавляем функцию
- Редактируем почтовый шаблон
Если вы хотите, чтобы при оформлении заказа покупателю пришла не только стандартная информация, определенная в почтовом шаблоне, то можно использовать событие OnOrderNewSendEmail.
Добавляем обработчик событияДобавляем в файл /bitrix/php_interface/init.php:
Добавляем функцию Она как раз и будет модернизировать и добавлять нужные данные в массив, который поступает в почтовый шаблон. Добавляем в файл /bitrix/php_interface/init.php:
function modifySendingSaleData($orderID, &$eventName, &$arFields) {
// инициализируем переменные
$name = '';
$lastName = '';
$fullName = '';
$phone = '';
$zip = '';
$countryName = '';
$obl = '';
$cityName = '';
$address = '';
$deliveryName = '';
$paySystemName = '';
// получаем параметры заказа по ID
$arOrder = CSaleOrder::GetByID($orderID);
// получаем свойства заказа
$orderProps = CSaleOrderPropsValue::GetOrderProps($orderID);
// проходим циклом по всем свойствам и вытаскиваем нужные нам
while ($arProps = $orderProps->Fetch()) {
// телефон
if ($arProps['CODE'] == 'PHONE') {
$phone = htmlspecialchars($arProps['VALUE']);
}
// страну, область, город,
if ($arProps['CODE'] == 'LOCATION') {
// если не перешли на местоположения 2.0
$arLocs = CSaleLocation::GetByID($arProps['VALUE']);
// если перешли на местоположения 2.0 раскомментируйте следующую строку
// и закомментируйте строчку выше
//$arLocs = CSaleLocation::GetByID(CSaleLocation::getLocationIDbyCODE($arProps['VALUE']));
$countryName = $arLocs['COUNTRY_NAME_LANG'];
$obl = $arLocs['REGION_NAME_LANG'];
$cityName = $arLocs['CITY_NAME_LANG'];
}
// индекс
if ($arProps['CODE'] == 'ZIP'){
$zip = $arProps['VALUE'];
}
// адрес
if ($arProps['CODE'] == 'ADDRESS') {
$address = $arProps['VALUE'];
}
// имя
if ($arProps['CODE'] == 'FIRSTNAME') {
$name = $arProps['VALUE'];
}
// фамилия
if ($arProps['CODE'] == 'LASTNAME') {
$lastName = $arProps['VALUE'];
}
}
$fullName = $lastName .' ' . $name;
$fullAddress = $zip . ', ' . $countryName . ', ' . $obl . ', ' . $cityName . ', ' . $address;
// получаем название службы доставки
$arDeliv = CSaleDelivery::GetByID($arOrder['DELIVERY_ID']);
if ($arDeliv) {
$deliveryName = $arDeliv['NAME'];
}
// получаем название платежной системы
$arPaySystem = CSalePaySystem::GetByID($arOrder['PAY_SYSTEM_ID']);
if ($arPaySystem) {
$paySystemName = $arPaySystem['NAME'];
}
// добавляем полученные значения в результирующий массив
$arFields['ORDER_DESCRIPTION'] = $arOrder['USER_DESCRIPTION'];
$arFields['USER_FULL_NAME'] = $fullName;
$arFields['PHONE'] = $phone;
$arFields['DELIVERY_NAME'] = $deliveryName;
$arFields['PAY_SYSTEM_NAME'] = $paySystemName;
$arFields['FULL_ADDRESS'] = $fullAddress;
}
- Если город не отображается, то попробуйте в цикл добавить условие
if ($arProps['CODE'] == 'CITY')
- Если хотите изменить отображение таблицы с содержимым заказа, то используйте
CSaleBasket::GetList
. Поid
заказа можно получитьid
всех товаров.
Редактируем почтовый шаблон
Теперь все ключи из массива $arField
s вы можете использовать в почтовом шаблоне SALE_NEW_ORDER:
Получатель: #USER_FULL_NAME#
Телефон: #PHONE#
Адрес доставки: #FULL_ADDRESS#
Доп. информация: #USER_DESCRIPTION#
Доставка: #DELIVERY_NAME#
Оплата: #PAY_SYSTEM_NAME#
Поработаем?
Опишите свой запрос, мы расчитаем стоимость вашей задачи.