JComments и VirtueMart. Добавляем возможность комментировать товары в VirtueMart

JComments и VirtueMart

По умолчанию в VirtueMart реализована возможность оставлять отзывы о товарах, но эта возможность доступна только для зарегистрированных пользователей. Получается, если клиент оформил заказ по телефону, а не на сайте, или совершил покупку без регистрации, то он не может написать отзыв о купленном товаре.

Как же быть в такой ситуации?

Выход очень простой. Нужно установить компонент JComments провести некоторые манипуляции с файлами VirtrueMart. Но обо всём давайте по порядку.

Установка и настройка JComments в VirtueMart

Шаг 1. Установите компонент JComments на ваш сайт. Ссылка на компонент комментариев для Joomla http://www.joomlatune.ru

 

Шаг 2. Отключите в настройках VirtueMart стандартные отзывы. Делается это в административной панели сайта по пути Компоненты->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&amp;view=productdetails&amp;virtuemart_product_id=' . $id . '&amp;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.

Комментарии   
# jcommentsАлександр 18.04.2021 14:26
Хорошая статья. Спасибо.
Может подскажите что может быть не так.
Всё сделал как в статье. Вкладка для отзывов есть, но при нажатии форма для отзывов не появляется. Кстати сайт на два языка. Видел Ваше видео на ютубе.
Не могу понять в чём проблема.
Сообщить модератору
# Jcomments и VirtueMartD-Nik Pro 26.04.2021 20:01
Посмотрите в папке с шаблоном должна быть папка HTML. Возможно у вас в ней файл com_virtuemart/productdetails/default.php, а так как этот файл имеет более высокий приоритет, то соответственно в нём и нужно делать правки.
То есть путь к этому фалу может быть следующим Ваш_Сайт/templates/имя_шаблона/html/com_virtuemart/productdetails/default.php
Сообщить модератору
# КомментарииАлександр 28.04.2021 08:55
Цитирую D-Nik Pro:

То есть путь к этому фалу может быть следующим Ваш_Сайт/templates/имя_шаблона/html/com_virtuemart/productdetails/default.php

Всё так и есть. Для карточки товара у меня переопределение. В нём и вносились правки. И в файл плагина тоже. К сожалению ничего не помогло. Кстати, когда ранее сайт был на одном языке всё работало. Перестало работать. когда сделал мультиязычный.
Сообщить модератору
# Настройка Jcomments для VirtueMartD-Nik Pro 28.04.2021 12:32
В настройках самого компонента Jcomments, нужно установить права (и для русского, и для украинского языка). Там для каждой группы пользователей в настройках нужно галочки поставить, что можно, а что нет. Вероятнее всего, вы этого не сделали.
Сообщить модератору
# Не работает JcommentsD-Nik Pro 27.04.2021 08:30
в настройках самого компонента Jcomments, нужно установить права. Там для каждой группы пользователей в настройках нужно галочки поставить, что можно, а что нет. Вероятнее всего, вы этого не сделали.
Сообщить модератору
# 5667Valerii 26.04.2021 10:41
Добрый день. Все сделал, но форма не появилась. Проверил несколько раз, думал, что что-то не включил, но все сделано по сценарию, увы не работает VirtueMart 3.8.8 10472 Joomla! 3.9.26. Мой сайт: https://tool.gidmaster.info
Что-то можете порекомендовать? Спасибо.
Сообщить модератору
# Настройка JcommentsD-Nik Pro 26.04.2021 19:59
Посмотрите в папке с шаблоном должна быть папка HTML. Возможно у вас в ней файл com_virtuemart/productdetails/default.php, а так как этот файл имеет более высокий приоритет, то соответственно в нём и нужно делать правки.
Сообщить модератору
# Проблема в JcommentsD-Nik Pro 27.04.2021 08:30
в настройках самого компонента Jcomments, нужно установить права. Там для каждой группы пользователей в настройках нужно галочки поставить, что можно, а что нет. Вероятнее всего, вы этого не сделали.
Сообщить модератору

АВТОРИЗАЦИЯ