JComments VirtueMart

JComments та VirtueMart. Додаємо можливість коментувати товари в 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.

Main Menu