Итак, что нам потребуется

  • Добавляем обработчик события
  • Добавляем функцию
  • Редактируем почтовый шаблон

Если вы хотите, чтобы при оформлении заказа покупателю пришла не только стандартная информация, определенная в почтовом шаблоне, то можно использовать событие 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 всех товаров.

Редактируем почтовый шаблон

Теперь все ключи из массива $arFields вы можете использовать в почтовом шаблоне SALE_NEW_ORDER:


Получатель: #USER_FULL_NAME#
Телефон: #PHONE#
Адрес доставки: #FULL_ADDRESS#
Доп. информация: #USER_DESCRIPTION#
Доставка: #DELIVERY_NAME#
Оплата: #PAY_SYSTEM_NAME#
Готовы сделать всю работу за Вас
от750
  • 60 минут

  • Дополнительные настройки шаблона для улучшения внешнего вида


Поработаем?

Опишите свой запрос, мы расчитаем стоимость вашей задачи.