Вот таким образом можно сделать табличный вид заказа с торговыми предложениями и самими товарами в письме. Для вывода таблицы в шаблоне нового заказа необходимо использовать переменную #ORDER_TABLE_ITEMS#
. Картинки тоже прилагаются.
Файл init.php
:
<?
AddEventHandler("sale", "OnOrderNewSendEmail", "ModifyOrderSaleMails");
function ModifyOrderSaleMails($orderID, &$eventName, &$arFields) {
if(CModule::IncludeModule("sale") && CModule::IncludeModule("iblock")) {
$strOrderList = "";
$dbBasketItems = CSaleBasket::GetList(
array("NAME" => "ASC"),
array("ORDER_ID" => $orderID),
false,
false,
array("PRODUCT_ID", "ID", "NAME", "QUANTITY", "PRICE", "CURRENCY")
);
$strOrderList = "
<style>
table.example {
border-collapse: collapse;
width: 585px;
}
table.example td {
border:1px solid black;
}
table.example td.num {
width: 30px;
text-align: center;
}
</style>
<table class=\"example\">
<tr>
<td class=\"num\" align=\"center\">№</td>
<td align=\"center\">Фото товара</td>
<td align=\"center\">Наименование</td>
<td align=\"center\">Количество</td>
<td align=\"center\">Цена, руб.</td>
<td align=\"center\">Cумма, руб.</td>
</tr>";
$i = 0;
while ($arProps = $dbBasketItems->Fetch()) {
$i += 1;
// image
$offer = CIBlockElement::GetById(IntVal($arProps["PRODUCT_ID"]))->GetNext();
$pictureId = $offer["PREVIEW_PICTURE"];
if (is_null($pictureId)) {
$realProductInfo = CCatalogSku::GetProductInfo(IntVal($arProps["PRODUCT_ID"]));
$realProduct = CIBlockElement::GetById(IntVal($realProductInfo["ID"]))->GetNext();
$pictureId = $realProduct["PREVIEW_PICTURE"];
}
$thumb = CFile::ResizeImageGet(
$pictureId,
array("width" => 200, "height" => 200),
BX_RESIZE_IMAGE_PROPORTIONAL,
false
);
$thumb = $thumb["src"];
// sum
$summ = $arProps['QUANTITY'] * $arProps['PRICE'];
$strOrderList .= "<tr><td class=\"num\">".$i."</td><td><img src=\"http://".$_SERVER['SERVER_NAME'] . $thumb."\"></td><td>".$arProps['NAME']."</td><td>".$arProps['QUANTITY']."</td><td>".number_format((float)$arProps['PRICE'], 2, '.', '')."</td><td>".number_format((float)$summ, 2, '.', '')."</td><tr>";
}
echo "</table>";
// пишем в переменную для письма
$arFields["ORDER_TABLE_ITEMS"] = $strOrderList;
}
}
?>
Подобным образом можно добавить и другие переменные к письму.