БЛОГОДЖУМЛА - БЛОГ О ДЖУМЛА

Как добавить фото товара в письмо покупателю в Virtuemart2

  • Категория: Virtuemart 2-3
  • Автор:
  • Просмотров: 12214

joomla virtuemart2 письмо покупателю фото

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

и получаем результат как на картинке.

 

Back to top