Программированием
Самостоятельное добавление переменных в шаблон через обработчики событий.
public function attachHandlers() {
// Когда отправляется письмо об изменении статуса заказа, это происходит
// в bitrix/modules/sale/lib/notify.php Notify::sendOrderStatusChange().
// Можно было бы привязаться к одному из событий смены статуса, но sendOrderStatusChange()
// в любом случае вызывает метод CAllEvent::Send(), в котором дергается событие
// OnBeforeEventAdd.
// Событие OnBeforeEventAdd вызывается в bitrix/modules/main/classes/general/event.php,
// метод CAllEvent::Send(). Это происходит для всех событий. Следовательно, удобно
// на это событие сделать свой универсальный роутер обработки событий.
// Так и поступим.
// Используем здесь старый механизм, так как он позволяет передавать аргументы
// по ссылке и, соответственно, модифицировать их в обработчике.
// Возможно, новый механизм EventManager::getInstance()->addEventHandler(); тоже
// так умеет?
AddEventHandler('main', 'OnBeforeEventAdd', function (&$event, &$lid, &$arFields, &$message_id, &$files, &$languageId) {
return $this->eventRouter($event, $lid, $arFields, $message_id, $files, $languageId);
});
}
/**
* Универсальный роутер событий.
*
* @param $event
* @param $lid
* @param $arFields
* @param $message_id
* @param $files
* @param $languageId
*/
protected function eventRouter(&$event, &$lid, &$arFields, &$message_id, &$files, &$languageId) {
switch (true) {
case strpos($event, 'SALE_STATUS_CHANGED_') === 0:
return $this->addOrderFieldsToEmail($event, $lid, $arFields, $message_id, $files, $languageId);
break;
}
}
/**
* Обработчик конкретного события.
*
* @param $event
* @param $lid
* @param $arFields
* @param $message_id
* @param $files
* @param $languageId
*/
protected function addOrderFieldsToEmail(&$event, &$lid, &$arFields, &$message_id, &$files, &$languageId) {
switch (true) {
case strpos($event, 'SALE_STATUS_CHANGED_') === 0:
$arFields['MY_FIELD'] = 'тут пишем что хотим';
break;
}
}
Бесплатно, больше переменных, но без картинок товаров
Воспользуемся модулем "Параметры заказа в письме" (Ипол). Это бесплатный модуль. Данное решение позволяет вывести больше переменных в письме о заказе. Недостаток - нет возможности вывести картинки товаров.- Модуль
Для вывода данных заказа в письме мы будем пользоваться модулем Битрикс "Параметры заказа в письме".
После установки произведем настройку модуля для его корректной работы:
- Переходим в Настройки модулей -> Параметры заказа в письме -> Настройки
- Выбираем:
Режим работы
- Многомакросовый Тип сообщения
- ТекстОбрабатываемые свойства заказа
- выбираем все зеленым.События, с которыми работает модуль
- Новый заказ- После проверяем, что определился именно тот шаблон (ссылка слева у
Новый заказ
)
- Шаблон
Переходим в почтовые шаблоны и ищем наш шаблонНовый заказ
.
После переходим к его редактированию.
- Пример шаблона:
Благодарим за интерес к товарам #SITE_NAME#. Ваш заказ получен и поступил в обработку. <br>
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 0px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">
Детали заказа:
</td>
<td style="background-color: #EFEFEF;">
</td>
</tr>
</thead>
<tbody>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">
Код заказа #ORDER_ID# <br>
Дата заказа: #ORDER_DATE# <br>
Способ оплаты: #IPOLMO_IMOPAYSYSTEM# <br>
Способ доставки: #IPOLMO_IMODELIVERY# <br>
</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">
Email: #EMAIL# <br>
Телефон: #IPOLMO_PHONE# <br>
Комментарий: #IPOLMO_IMOCOMMENT# <br>
</td>
</tr>
</tbody>
</table>
<br>
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">
Адрес доставки:
</td>
</tr>
</thead>
<tbody>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">
#IPOLMO_FIO# <br>
#IPOLMO_ADDRESS# <br>
#IPOLMO_LOCATION#
</td>
</tr>
</tbody>
</table>
<br>
<table style="border-collapse: collapse; width: 100%; border-top: 1px solid #DDDDDD; border-left: 1px solid #DDDDDD; margin-bottom: 20px;">
<thead>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">
Заказ:
</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; background-color: #EFEFEF; font-weight: bold; text-align: left; padding: 7px; color: #222222;">
Сумма:
</td>
</tr>
</thead>
<tbody>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">
#ORDER_LIST#
</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">
#PRICE#
</td>
</tr>
<tr>
<td style="font-size: 12px; text-align: right; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">
#IPOLMO_IMODELIVERY#
</td>
<td style="font-size: 12px; text-align: right; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">
#IPOLMO_IMODELIVERYPRICE#
</td>
</tr>
<tr>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">
Итого:
</td>
<td style="font-size: 12px; border-right: 1px solid #DDDDDD; border-bottom: 1px solid #DDDDDD; text-align: left; padding: 7px;">
#IPOLMO_IMOPRICE#
</td>
</tr>
</tbody>
</table>
Если у Вас есть какие-либо вопросы, ответьте на это сообщение.
Кастомизируем верстку по желанию клиента.