Фотография товара в уведомлении о заказе
Актуально для версии 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' => (isset($img)) ? $img : '/images/nophoto.jpg'
];
}
return $items;
}
Теперь в "Шаблоне товарного наименования" можно использовать переменную %img%. При добавлении следующего кода в шаблон, в письме будет отображаться изображение:
<img src="%img%"/>