За замовчуванням в VirtueMart реалізована можливість залишати відгуки про товари, але ця можливість доступна тільки для зареєстрованих користувачів. Виходить, якщо клієнт оформив замовлення по телефону, а не на сайті, або зробив покупку без реєстрації, то він не може написати відгук про куплений товар.
Як же бути в такій ситуації?
Вихід дуже простий. Потрібно встановити компонент JComments та провести деякі маніпуляції з файлами VirtrueMart. Але про все давайте по порядку.
Встановлення та налаштування JComments в VirtueMart
Крок 1. Встановіть компонент JComments на ваш сайт. Посилання на компонент коментарів для Joomla http://www.joomlatune.ru
Крок 2. Вимкніть в налаштуваннях VirtueMart стандартні відгуки. Робиться це в адміністративній панелі сайту по шляху Компоненти->Virtuemart->Налаштування->Зовнішній вигляд

Крок 3. Щоб форма коментарів з'явилася на сторінках товарів додамо в самий кінець файлу /com_virtuemart/productdetails/default.php наступний код:
<?php // onContentAfterDisplay event
echo $this->product->event->afterDisplayContent;
$comments = JPATH_ROOT . '/components/com_jcomments/jcomments.php';
if (file_exists($comments)) {
require_once($comments);
echo JComments::showComments($this->product->virtuemart_product_id, 'com_virtuemart', $this->product->product_name);
}
?>
Примітка. Щоб коментарі виводилися перед схожими товарами потрібно додати наведений вище код в файл /com_virtuemart/productdetails/default.php перед
<?php
// Product Files
// foreach ($this->product->images as $fkey => $file) {
// Todo add downloadable files again
Крок 4. Якщо у вас VirtueMart 3, то необхідно замінити весь вміст файлу \components\com_jcomments\plugins\com_virtuemart.plugin.php на
<?php
/**
* JComments plugin for VirtueMart objects support
*
* @version 2.0
* @package JComments
* @author Sergey M. Litvinov (Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її. )
* @copyright (C) 2006-2013 by Sergey M. Litvinov (http://www.joomlatune.ru)
* @license GNU/GPL: http://www.gnu.org/copyleft/gpl.html
*/
defined('_JEXEC') or die;
class jc_com_virtuemart extends JCommentsPlugin
{
function getObjectInfo($id, $language = null)
{
jimport('joomla.filesystem.file');
$info = new JCommentsObjectInfo();
$configHelper = JPATH_ADMINISTRATOR.'/components/com_virtuemart/helpers/config.php';
if (JFile::exists($configHelper)) {
if (!class_exists('VmConfig')) {
require_once($configHelper);
}
VmConfig::loadConfig();
$db = JFactory::getDBO();
$db->setQuery('SELECT product_name FROM #__virtuemart_products_' . VMLANG . ' WHERE virtuemart_product_id =' . $id);
$row = $db->loadObject();
if (!empty($row)) {
$db->setQuery('SELECT virtuemart_category_id FROM #__virtuemart_product_categories WHERE virtuemart_product_id =' . $id);
$categoryId = $db->loadResult();
$info->title = $row->product_name;
$info->userid = $row->created_by;
// $info->link = AllEventsHelperRoute::getEventRoute($id);
$info->link = JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' . $id . '&virtuemart_category_id=' . $categoryId);
}
}
return $info;
}
}
От і все. Тепер в картці товару у вас повинна з'явитися форма коментарів JComments
Вивід кількості відгуків про товар в JComments та VirtueMart
Якщо ви хочете вивести, наприклад, поряд із назвою товару, кількість відгуків, то зробити це можна так.
В файлі /com_virtuemart/productdetails/default.php одразу після
<div class="back-to-category">
вставляємо
<span class="otzyv"><?php
$comments = JPATH_SITE . '/components/com_jcomments/jcomments.php';
if (file_exists($comments)) {
require_once($comments);
$options = array();
$options['object_id'] = $this->product->virtuemart_product_id;
$options['object_group'] = 'com_virtuemart';
$options['published'] = 1;
$count = JCommentsModel::getCommentsCount($options);
echo $count ? ('<a href="#jc">Отзывов ('. $count . ')</a>') : '<a href="#jc">Напишите первый отзыв</a>';
}
?></span>
Тепер, якщо у товару будуть відгуки (коментарі), то їх кількість буде відображено в дужках, поруч з написом «Відгуки». Якщо ще немає відгуків, то виведеться напис: «Напишіть перший відгук». В обох випадках при натисканні на посилання відвідувача буде перекидати вниз до відгуків про товар.
Прибираємо копірайт в JComments
Варіант 1. Знаходимо в файлі /components/com_jcomments/jcomments.class.php наступний код:
$tmpl->addGlobalVar('support', base64_decode('PGEgaHJlZj0iaHR0cDovL3d3dy5qb29tbGF0dW5lLnJ1IiB0aXRsZT0iSkNvbW1lbnRzIiB0YXJnZXQ9Il9ibGFuayI+SkNvbW1lbnRzPC9hPg=='));
та міняємо його на:
$tmpl->addGlobalVar('support', base64_decode(''));
Варіант 2. У файлі components/com_jcomments/tpl/default/tpl_index.php видаляємо код:
<?php echo $this->getVar('support'); ?>
Сподіваюся цей матеріал був вам корисний і ви зможете легко налаштувати відгуки для товарів в VirtueMart за допомогою компонента коментарів JComments.
