Создание оформления письма оформления заказа в 1С Битрикс. Список товаров - таблица
Мы будем работать с почтовыми шаблонами, располагающимися в "Администрировании" панели управления 1С Битрикс.
Заполним макет шаблона следующим образом:
<b>Здравствуйте, #ORDER_USER#,</b> <br />
Ваш заказ номер #ORDER_ID# от #ORDER_DATE# принят. <br />
Стоимость заказа: #PRICE#<br />
<br />
Состав заказа
<br />
#CUSTOM_ORDER_LIST#<br />
Вы можете следить за выполнением своего заказа (на какой стадии выполнения он находится), войдя в Ваш персональный раздел сайта #SITE_NAME#.<br />
<br />
Обратите внимание, что для входа в этот раздел Вам необходимо будет ввести логин и пароль пользователя сайта #SITE_NAME#.<br />
<br />
Для того, чтобы аннулировать заказ, воспользуйтесь функцией отмены заказа, которая доступна в Вашем персональном разделе сайта #SITE_NAME#.<br />
<br />
Пожалуйста, при обращении к администрации сайта #SITE_NAME# ОБЯЗАТЕЛЬНО указывайте номер Вашего заказа - #ORDER_ID#.<br />
<br />
Спасибо за покупку!<br />
Для работы с новой переменной опишем ее в файле local/php_interface/init.php. Создадим новый обработчик события.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
AddEventHandler("sale", "OnOrderNewSendEmail", "AddMailParams"); | |
function AddMailParams(orderID, &eventName, &$arFields) | |
{ | |
if(CModule::IncludeModule("sale") && CModule::IncludeModule("iblock")) | |
{ | |
$dbBasketItems = CSaleBasket::GetList( | |
array("NAME" => "ASC"), | |
array("ORDER_ID" => $orderID), | |
false, | |
false, | |
array("PRODUCT_ID", "ID", "NAME", "QUANTITY", "PRICE", "CURRENCY") | |
); | |
$customOrderList = "<table style='border-collapse: collapse; | |
width: 98%; border: black; | |
border-width: 1px; | |
border-style: solid;'>"; | |
$customOrderList .= "<tr>"; | |
$customOrderList .= "<th>Наименование</th>"; | |
$customOrderList .= "<th style='text-align: center; | |
border: black; | |
border-width: 1px; | |
border-style: solid; | |
width: 15%; | |
'>Цена за единицу</th>"; | |
$customOrderList .= "<th style='text-align: center; | |
border: black; | |
border-width: 1px; | |
border-style: solid; | |
'>Количество</th>"; | |
$customOrderList .= "<th style='text-align: center; | |
border: black; | |
border-width: 1px; | |
border-style: solid; | |
width: 15%; | |
'>Цена</th>"; | |
$customOrderList .= "</tr>"; | |
while (arBasketItems=dbBasketItems->Fetch()) | |
{ | |
if (CSaleBasketHelper::isSetItem($val)) | |
continue; | |
$customOrderList .= "<tr>"; | |
$customOrderList .= "<td style='border: black; | |
border-width: 1px; | |
border-style: solid; | |
'>".$arBasketItems["NAME"]."</td>"; | |
$customOrderList .= "<td style='text-align: center; | |
border: black; | |
border-width: 1px; | |
border-style: solid; | |
'>".SaleFormatCurrency($arBasketItems["PRICE"], CSaleLang::GetLangCurrency(SITE_ID))."</td>"; | |
$customOrderList .= "<td style='text-align: center; | |
border: black; | |
border-width: 1px; | |
border-style: solid; | |
'>".arBasketItems["QUANTITY"]."".arBasketItems["WEIGHT"]."</td>"; | |
$customOrderList .= "<td style='text-align: center; | |
border: black; | |
border-width: 1px; | |
border-style: solid; | |
'>".SaleFormatCurrency(arBasketItems["PRICE"]∗arBasketItems["QUANTITY"], CSaleLang::GetLangCurrency(SITE_ID))."</td>"; | |
$customOrderList .= "</tr>"; | |
} | |
$customOrderList .= "</table>"; | |
arFields["CUSTOMORDERLIST"]=customOrderList; | |
} | |
} | |
?> |
Если у вас на сайте есть возможность оформления быстрого заказа, то измените и его шаблон [NEW_ONE_CLICK_BUY] следующим образом:
<b>Здравствуйте, #CLIENT_NAME#!</b>
<br />
<br />
Ваш заказ № #ACCOUNT_NUMBER# от #RS_DATE_CREATE# принят.
<br />
Стоимость заказа #ORDER_PRICE#
<br />
<br />
Состав заказа:
<br />
#CUSTOM_ORDER_LIST#
<br />
В ближайшее время с Вами свяжется менеджер.
<br />
Спасибо за заказ!
<br />
Возможность быстрого заказа создавалась компанией АСПРО и располагается в папке /bitrix/components/aspro/oneclickbuy.next. Для добавления нового поля в шаблон заказа добавим новый обработчик события в файл init.php.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
$eventManager->addEventHandler("main", "OnBeforeEventAdd", "AddMailParams")); |
Второй способ оформления обработчиков
Вторым способом оформления обработчиков является создание иерархии. В файле init.php пропишем:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<? | |
if (file_exists($_SERVER["DOCUMENT_ROOT"]."/local/php_interface/include/handlers.php")) | |
require_once($_SERVER["DOCUMENT_ROOT"]."/local/php_interface/include/handlers.php"); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if (file_exists($_SERVER["DOCUMENT_ROOT"]."/local/php_interface/include/orderMailCustomizer.php")) | |
require_once($_SERVER["DOCUMENT_ROOT"]."/local/php_interface/include/orderMailCustomizer.php"); | |
$eventManager = Bitrix\Main\EventManager::getInstance(); | |
$eventManager->addEventHandler("sale", "OnOrderNewSendEmail", array('OrderMailCustomizer', 'OnOrderNewSendEmailHandler')); | |
$eventManager->addEventHandler("main", "OnBeforeEventAdd", array('OrderMailCustomizer', 'OneClickBuyHandler')); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class OrderMailCustomizer | |
{ | |
/** | |
* @param $orderId | |
* @param $eventName | |
* @param $arFields | |
* Добавляет дополнительный параметр в шаблон письма для нового заказа | |
* параметр CUSTOM_ORDER_LIST, в котором содержится форматированный заказ в | |
* виде таблицы | |
*/ | |
public function OnOrderNewSendEmailHandler(orderId, &eventName, &$arFields) | |
{ | |
if (!CModule::IncludeModule("sale") || !CModule::IncludeModule("iblock")) return; | |
arFields["CUSTOMORDERLIST"]=OrderMailCustomizer::GetCustomOrderList(orderId); | |
} | |
public function OneClickBuyHandler(event, &siteId, &$arFields) | |
{ | |
if ($event != 'NEW_ONE_CLICK_BUY') return true; | |
arFields["CUSTOMORDERLIST"]=OrderMailCustomizer::GetCustomOrderList(arFields['RS_ORDER_ID']); | |
} | |
private static function GetCustomOrderList($orderId) | |
{ | |
$dbBasketItems = CSaleBasket::GetList( | |
array("NAME" => "ASC"), | |
array("ORDER_ID" => $orderId), | |
false, | |
false, | |
array("PRODUCT_ID", "ID", "NAME", "QUANTITY", "PRICE", "CURRENCY") | |
); | |
$dbBasketItems = CSaleBasket::GetList( | |
array("NAME" => "ASC"), | |
array("ORDER_ID" => $orderID), | |
false, | |
false, | |
array("PRODUCT_ID", "ID", "NAME", "QUANTITY", "PRICE", "CURRENCY") | |
); | |
$customOrderList = "<table style='border-collapse: collapse; | |
width: 98%; border: black; | |
border-width: 1px; | |
border-style: solid;'>"; | |
$customOrderList .= "<tr>"; | |
$customOrderList .= "<th>Наименование</th>"; | |
$customOrderList .= "<th style='text-align: center; | |
border: black; | |
border-width: 1px; | |
border-style: solid; | |
width: 15%; | |
'>Цена за единицу</th>"; | |
$customOrderList .= "<th style='text-align: center; | |
border: black; | |
border-width: 1px; | |
border-style: solid; | |
'>Количество</th>"; | |
$customOrderList .= "<th style='text-align: center; | |
border: black; | |
border-width: 1px; | |
border-style: solid; | |
width: 15%; | |
'>Цена</th>"; | |
$customOrderList .= "</tr>"; | |
while (arBasketItems=dbBasketItems->Fetch()) | |
{ | |
if (CSaleBasketHelper::isSetItem($val)) | |
continue; | |
$customOrderList .= "<tr>"; | |
$customOrderList .= "<td style='border: black; | |
border-width: 1px; | |
border-style: solid; | |
'>".$arBasketItems["NAME"]."</td>"; | |
$customOrderList .= "<td style='text-align: center; | |
border: black; | |
border-width: 1px; | |
border-style: solid; | |
'>".SaleFormatCurrency($arBasketItems["PRICE"], CSaleLang::GetLangCurrency(SITE_ID))."</td>"; | |
$customOrderList .= "<td style='text-align: center; | |
border: black; | |
border-width: 1px; | |
border-style: solid; | |
'>".arBasketItems["QUANTITY"]."".arBasketItems["WEIGHT"]."</td>"; | |
$customOrderList .= "<td style='text-align: center; | |
border: black; | |
border-width: 1px; | |
border-style: solid; | |
'>".SaleFormatCurrency(arBasketItems["PRICE"]∗arBasketItems["QUANTITY"], CSaleLang::GetLangCurrency(SITE_ID))."</td>"; | |
$customOrderList .= "</tr>"; | |
} | |
$customOrderList .= "</table>"; | |
return $customOrderList; | |
} | |
} |
Комментарии
Отправить комментарий