Бортовой журнал Ктулху

Битрикс: изменение данных поля ORDER_LIST почтового события NEW_SALE_ORDER

Понадобилось мне изменить стандартный вид присылаемого при заказе письма (почтовое событие NEW_SALE_ORDER).

 

По умолчанию приходило такое письмо.

письмо битрикс

Состав заказа совершенно неинформативен и внешний вид весьма уныл.

почтовое событие битрикс

битрикс почтовое событие

битрикс ORDER_LIST

Через редактирование шаблонов невозможно поменять внешний вид списка товаров в заказе, потому что переменная ORDER_LIST формируется в модуле sale.order.ajax.

В файле component.php находим такую строку:

foreach ($arBasketList as $arItem)
 {
 $measureText = (isset($arItem["MEASURE_TEXT"]) && strlen($arItem["MEASURE_TEXT"])) ? $arItem["MEASURE_TEXT"] : GetMessage("SOA_SHT");

Внутри этого цикла формируется список товаров.

Приводим код к такому виду:

$strOrderList .="<table>";
 
 $strOrderList .="<th>";
 $strOrderList .=" <tr>";
 $strOrderList .=" <td></td>";
 $strOrderList .=" <td></td>";
 $strOrderList .=" <td>Металл</td>";
 $strOrderList .=" <td>Вставка</td>";
 $strOrderList .=" <td>Размер</td>";
 $strOrderList .=" <td>Вес</td>";
 $strOrderList .=" </tr>";
 $strOrderList .="</th>";
 
 foreach ($arBasketList as $arItem)
 {
 $measureText = (isset($arItem["MEASURE_TEXT"]) && strlen($arItem["MEASURE_TEXT"])) ? $arItem["MEASURE_TEXT"] : GetMessage("SOA_SHT");
$product_props = gp($arItem['PRODUCT_ID']); // ф-я в init.php Вытягивает св-ва товара
 
 $strOrderList .= "<tr>";
 $strOrderList .= "<td>";
 $strOrderList .= "<img width=88 height=88 src='".$_SERVER['SERVER_NAME'].$product_props['IMG']."'>";
 $strOrderList .= "</td><td>";
 $strOrderList .= "<p font: 14px Arial;color: #EC1A21'>".$product_props['NAME']."</p>";
 $strOrderList .= "</td><td>";
 $strOrderList .= "<p style='font: bold 12px Arial;color: #191919;'>".$product_props['METALL']['VALUE']."</p>";
 $strOrderList .= "</td><td>";
 $strOrderList .= "<p style='font: bold 12px Arial;color: #191919;'>".$product_props['VSTAVKA']['VALUE']."</p>";
 $strOrderList .= "</td><td>";
 $strOrderList .= "<p style='font: bold 12px Arial;color: #191919;'>".$product_props['RAZMER']['VALUE']."</p>";
 $strOrderList .= "</td><td>";
 $strOrderList .= "<p style='font: bold 12px Arial;color: #191919;'>".$product_props['VES']['VALUE']."</p>";
 $strOrderList .= "</td><td>";
 $strOrderList .= "<p style='font: bold 24px Arial;color: #1f1f1f;'>".$arItem['PRICE']."</p>";
 $strOrderList .= "</td>";
 $strOrderList .= "</tr>";
 
 }
 $strOrderList .= "</table>";

Перед foreach я добавил открывающий тег таблицы и шапку, после завершения цикла - закрывающий тег. Как видим, ничего сложного.

Теперь приходит такое письмо:

битрикс письмо

Данные по товарам у меня вытягиваются самописной функцией gp($id).

Код функции смысла приводить нет, т.к. для других проектов она не подойдет.

Функция возвращает массив, содержащий свойства товара, которые можно вытащить и через стандартный GetList.