Фотография товара в уведомлении о заказе — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «'''Актуально для версии 21''' == Задача == Добавить в почтовое уведомление о заказе изображен…»)
 
Строка 54: Строка 54:
 
</source>
 
</source>
  
  [[category:Написание кастомных макросов]][[category:Шаблоны уведомлений]]
+
  [[category:Написание кастомных макросов]][[category:Модуль Шаблоны уведомлений]]

Версия 12:07, 18 марта 2020

Актуально для версии 21

Задача

Добавить в почтовое уведомление о заказе изображение товара, используя модуль "Шаблоны уведомлений".

Решение

Отображение информации о товарном наименовании настраивается в блоке "Шаблон товарного наименования".
По-умолчанию в шаблоне можно использовать только следующие переменные:
%link% - ссылка на страницу товара
%name% - наименование товара
%price% - цена
%amount% - количество данного товара в заказе
%suffix% - валюта

1. Для того, чтобы можно было добавлять в шаблон уведомления информацию о других характеристиках, нужно кастомизировать метод EmarketNotification::getOrderItems(). Его нужно скопировать из файла classes/components/emarket/notification.php в файл classes/components/emarket/customMacros.php, а затем внести в него правки.

public function getOrderItems(order $order, $suffix) {
    $umiHierarchy = umiHierarchy::getInstance();
    $items = [];

    foreach ($order->getItems() as $item) {
        $productPage = $item->getItemElement();
        $link = '';

        if ($productPage instanceof iUmiHierarchyElement) {
            $link = $umiHierarchy->getPathById($productPage->getId());
        }

        // Определяем путь до изображения.
        // Подразумевается, что изображение установлено в поле типа "Изображение" с идентификатором "photo"
        $imgObj = $productPage->getValue('photo');
        if ($imgObj instanceof iUmiImageFile) {
            $img = $imgObj->getFilePath();
        }

        $items[] = [
            'link' => $link,
            'name' => $item->getName(),
            'price' => $item->getTotalActualPrice(),
            'amount' => $item->getAmount(),
            'suffix' => $suffix,
            // Добавляем путь до изображения в возвращаемый массив
            'img' => $img					
            ];
    }

    return $items;
}

Теперь в "Шаблоне товарного наименования" можно использовать переменную %img%. При добавлении следующего кода в шаблон, в письме будет отображаться изображение:

<img src="%img%"/>