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

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

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

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


Поработаем?

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