По многочисленным просьбам телезрителей читателей блога добавляем фото товара в письмо покупателю в Virtuemart2.
Как мы знаем, Virtuemart2 теперь можно полноценно шаблонизировать - как и любой правильный компонент или модуль в Joomla. Что это значит - это значит, что наши измененные файлы шаблона мы размещаем в папке html/com_virtuemart и
1. никакие дальнейшие обновления компонента не затронут наших изменений (если не будет меняться структура файлов шаблонов Virtuemart :) )
2. Мы легко сможем переключать наш магазин на совершенно другой шаблон - вместе со всем сайтом.
Вернемся к нашим ба... письмам.
В данный момент последняя версия Virtuemart - 2.0.18a . Будем экспериментировать с ней.
Все шаблоны в Virtuemart2 находятся в \components\com_virtuemart\views
Все шаблоны писем, уведомлений хранятся в \components\com_virtuemart\views\invoice\tmpl
Нам нужен файл invoice_items.php (кстати, в предыдущих релизах вирта вывод списка товаров в письме был в файле mail_html_pricelist.php). Копируем его в \templates\Ваш_шаблон\html\com_virtuemart\invoice
И начинаем вставлять фото товара.
В Virtuemart2, для того чтобы вставить в письмо любое вложение (файл) достаточно поместить в массив $views->mediaToSend путь к этому файлу. А чтобы показать этот файл в письме - добавить в html письма cid:имя_файла
Открываем наш скопированный invoice_items.php
Находим в районе 43 строки:
foreach($this->orderDetails['items'] as $item) {
и меняем эту строку на
$dbmedia= JFactory::getDbo(); $query= $dbmedia->getQuery(true); foreach($this->orderDetails['items'] as $item) { $query->clear(); $query->select('*'); $query->from('#__virtuemart_medias as m'); $query->leftJoin('#__virtuemart_product_medias as p on p.virtuemart_media_id=m.virtuemart_media_id'); $query->where('p.virtuemart_product_id='.$item->virtuemart_product_id); $dbmedia->setQuery($query); $photos = $dbmedia->loadObject(); if (!isset($this->mediaToSend)) { $this->mediaToSend = array(); } $this->mediaToSend[]=$photos->file_url_thumb;
далее перед
<?php echo $item->order_item_sku; ?>
добавляем
<img style="float: left;margin: 0;width: 45px;" src="cid:<?php echo basename($photos->file_url_thumb)?>">
и получаем результат как на картинке.