По многочисленным просьбам телезрителей читателей блога добавляем фото товара в письмо покупателю в 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)?>">
и получаем результат как на картинке.

