30 апреля 2022
725
Хотим создать красивый шаблон, который будет приходить покупателю при Новом заказе, как это сделать? Как добавить туда дополнительные переменные?


Программированием

Самостоятельное добавление переменных в шаблон через обработчики событий. 

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;
        }
    }


Бесплатно, больше переменных, но без картинок товаров

Воспользуемся модулем "Параметры заказа в письме" (Ипол). Это бесплатный модуль. Данное решение позволяет вывести больше переменных в письме о заказе. Недостаток - нет возможности вывести картинки товаров.
  1. Модуль
    Для вывода данных заказа в письме мы будем пользоваться модулем Битрикс "Параметры заказа в письме".
    После установки произведем настройку модуля для его корректной работы:
  • Переходим в Настройки модулей -> Параметры заказа в письме -> Настройки
  • Выбираем: Режим работы - Многомакросовый
  • Тип сообщения - Текст
  • Обрабатываемые свойства заказа - выбираем все зеленым.
  • События, с которыми работает модуль - Новый заказ
  • После проверяем, что определился именно тот шаблон (ссылка слева у Новый заказ
  1. Шаблон
    Переходим в почтовые шаблоны и ищем наш шаблон Новый заказ.
    После переходим к его редактированию.
  • Пример шаблона:
 &nbsp; Благодарим за интерес к товарам&nbsp;#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>

Если у Вас есть какие-либо вопросы, ответьте на это сообщение.
Кастомизируем верстку по желанию клиента.
Позвоните нам!
Личный кабинет
Вам будет доступна история заказов, управление рассылками, свои цены и скидки для постоянных клиентов и прочее.
Ваш логин
Ваш пароль
Работаем для вас с 9:30 до 18:30
Ждем писем!
г. Санкт-Петербург, Краснопутиловская ул., 69