Битрикс: изменение данных поля ORDER_LIST почтового события NEW_SALE_ORDER
2015-11-04
Понадобилось мне изменить стандартный вид присылаемого при заказе письма (почтовое событие NEW_SALE_ORDER).
По умолчанию приходило такое письмо.
Состав заказа совершенно неинформативен и внешний вид весьма уныл.
Через редактирование шаблонов невозможно поменять внешний вид списка товаров в заказе, потому что переменная 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.