По умолчанию в 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.
Может подскажите что может быть не так.
Всё сделал как в статье. Вкладка для отзывов есть, но при нажатии форма для отзывов не появляется. Кстати сайт на два языка. Видел Ваше видео на ютубе.
Не могу понять в чём проблема.
То есть путь к этому фалу может быть следующим Ваш_Сайт/templates/имя_шаблона/html/com_virtuemart/productdetails/default.php
Всё так и есть. Для карточки товара у меня переопределение. В нём и вносились правки. И в файл плагина тоже. К сожалению ничего не помогло. Кстати, когда ранее сайт был на одном языке всё работало. Перестало работать. когда сделал мультиязычный.
Что-то можете порекомендовать? Спасибо.
RSS лента комментариев этой записи