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