Форум русской поддержки Joomla!® CMS
06.12.2016, 14:13:14 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Extravote и jcomments альтернатива стандартным отзывам

 (Прочитано 6278 раз)
0 Пользователей и 1 Гость смотрят эту тему.
20dollars
Давно я тут
****

Репутация: +4/-2
Offline Offline

Сообщений: 237


« : 15.02.2013, 11:08:27 »

Стандартная система отзывов не удовлетворяет по причине отсутствия CAPTCHA, контроля за спамом и наличия обязательного указания e-mail (не каждый захочет светить мыло при добавлении коммента). В принципе все это можно вылечить порывшись на форумах, видел некоторые платные решения, но все же решили обойтись без танцев с бубном и уйти в сторону компонента jcomments. Он и так используется у нас на сайте в связке с компонентом K2 и в стандартных материалах для комментирования статей и обзоров, удобен для модерации, имеет гибкие настройки. Да и общий стиль сайта хочется сохранить использовав глобально один компонент, а не разводить винегрет.
Для решения данного вопроса воспользовались плагином com_jshopping.plugin.php (http://joomlaforum.ru/index.php?action=dlattach;topic=237810.0;attach=453021589) - Распаковать и скопировать в /components/com_jcomments/plugins/ а так же заменой содержимого файла /components/com_jshopping/templates/default/product/review.php, следующим кодом:
Код:
<?php
if ($this->allow_review){
$comments = JPATH_SITE.'/components/com_jcomments/jcomments.php';
if (file_exists($comments)) {
require_once($comments);
print JComments::showComments($this->product->product_id, 'com_jshopping', $this->product->name); }
}
?>
В этой связке форма комментариев jcomments заменяет стандартные отзывы и все работает чудесно. Далее столкнулись  с проблемой счетчика количества отзывов в списке товаров категории, так как он считает только стандартные отзывы. Лечится просто: в файле /components/com_jshopping/templates/default/list_products/product.php заменяем часть кода внутри <div class="count_commentar">
Код:
<?php print sprintf(_JSHOP_X_COMENTAR, $product->reviews_count);?>
на это:
Код:
<?php
            $comments = JPATH_SITE . '/components/com_jcomments/jcomments.php';
  if (file_exists($comments)) {
    require_once($comments);
    $options = array();
    $options['object_id'] = $product->product_id;
    $options['object_group'] = 'com_jshopping';
    $options['published'] = 1;
    $count = JCommentsModel::getCommentsCount($options);
    echo $count ? ('Отзывов: ('. $count . ')') : 'Нет отзывов';
  }
?>
Этот же код надо заменить и в /components/com_jshopping/templates/default/products/listproducts.php (список сопутствующие товары) и в /components/com_jshopping/templates/default/search/result.php (список товаров результата поиска)
Осталась последняя проблема - звезды рейтинга. Во-первых они используются у нас как часть общего дизайна сайта, фактор доверия к товарам у посетителей и как расширенный сниппет в выдаче поисковиков. Они так же привязаны только к стандартным отзывам но хотелось бы сохранить данный элемент. Для этого я поступил совершенно варварским способом и в файл /components/com_jshopping/templates/default/product/review.php, помимо ранее вставленного кода формы комментариев jcomments втулил следующее:
Код:
<!--Оценить товар-->
<hr/>
<form action="<?php print SEFLink('index.php?option=com_jshopping&controller=product&task=reviewsave');?>" name="add_review" method="post" onsubmit="return validateReviewForm(this.name)">       
<input type="hidden" name="product_id" value="<?php print $this->product->product_id?>" />
<input type="hidden" name="back_link" value="<?php print $_SERVER['REQUEST_URI']?>" />
<div style="display:none;">
<noindex>
<input type="text" name="user_name" id="review_user_name" class="inputbox" value="review"/>
<input type="text" name="user_email" id="review_user_email" class="inputbox" value="review@test.com" />
<textarea name="review" id="review_review" class="jshop inputbox">review</textarea>
</noindex>
</div>
<?php for($i=1; $i<=$this->stars_count*$this->parts_count; $i++){?>
<input style="margin:5px 0;" name="mark" type="radio" class="star {split:<?php print $this->parts_count?>}" value="<?php print $i?>" <?php if ($i==$this->stars_count*$this->parts_count){?>checked="checked"<?php }?>/>
<?php } ?>
<?php print $this->_tmp_product_review_before_submit;?>
<input type="submit" class="button validate" value="<?php print 'Оценить товар'?>" />
</form>
<!--Оценить товар-->
То есть у меня на странице используются комментарии jcomments и стандартная форма отзывов, поля для заполнения которой скрыты для пользователя и заполнены левыми данными. Таким образом со стандартной формы остались только звезды голосования.
Способ не самый лучший, хотелось бы уйти в сторону плагина extravote (http://joomlamaster.org.ua/plaginy/40-plagin-otsenki-materialov-joomla-extravote-30.html) Но рецепта по его связке с JoomShopping пока не нашел. В настройках плагина extravote есть возможность включить в текст материала доп.голосование вставив код {extravote #}, где # это id голосования. Все мои попытки внедрить данное решение на страницы товаров магазина заканчивались выводом текста вроде {extravote 45}. То есть код не обрабатывается плагинами. Подскажите, кто знает решение данного вопроса. Буду очень признателен, спасибо заранее ))
Записан
Bartlebi
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 74


« Ответ #1 : 19.05.2014, 02:31:24 »

Ну что, за полтора года кто-то нашел решение?Azn
Можно было, видимо, интегрировать плагин прямую в карточку товара, Нашел это в какой-то теме с virtuemart:
Код:
<?php JPluginHelper::importPlugin( 'content', 'extravote' ); $dispatcher =& JDispatcher::getInstance(); $results = $dispatcher->trigger( 'extravote', $this->product->product_id ); ?>
Разработчик jcomments тоже не спешит вот уже второй год внедрять рейтинг:(
Записан
Алеша
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« Ответ #2 : 18.03.2015, 23:28:30 »

Далее столкнулись  с проблемой счетчика количества отзывов в списке товаров категории, так как он считает только стандартные отзывы. Лечится просто: в файле /components/com_jshopping/templates/default/list_products/product.php заменяем часть кода внутри <div class="count_commentar">
Код:
<?php print sprintf(_JSHOP_X_COMENTAR, $product->reviews_count);?>
на это:
Код:
<?php
            $comments = JPATH_SITE . '/components/com_jcomments/jcomments.php';
  if (file_exists($comments)) {
    require_once($comments);
    $options = array();
    $options['object_id'] = $product->product_id;
    $options['object_group'] = 'com_jshopping';
    $options['published'] = 1;
    $count = JCommentsModel::getCommentsCount($options);
    echo $count ? ('Отзывов: ('. $count . ')') : 'Нет отзывов';
  }
?>

Скажите пожалуйста, а как сделать, чтобы этот счетчик считал отзывы не только на странице списка товаров, но и на странице конкретного товара, т.е. в файле  /components/com_jshopping/templates/default/product/product_default.php
У меня описание товара в JoomShopping разбито на вкладки и в последней вкладке отзывы Jcomments. Что нужно поменять в коде счетчика, чтобы он начал считать отзывы и получилось, как на картинке "Комментарии (17)", а не просто слово "Комментарии" во вкладке.

Если ставить код в нынешнем виде, то он выдает числа не соответствующие количеству отзывов, т.е. отзывов по факту 45, а он пишет "Комментарии (9)".
Записан
maxDPUA
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 26


« Ответ #3 : 11.04.2015, 22:02:39 »

Если ставить код в нынешнем виде, то он выдает числа не соответствующие количеству отзывов, т.е. отзывов по факту 45, а он пишет "Комментарии (9)".

Попробуй так:

Вывод количества комментариев/отзывов в карточке товара
Показать текстовый блок

Вывод количества комментариев/отзывов в категории список товаров
Показать текстовый блок


Выводить в нужном месте так:
Код:
<?php  echo $count ? ('Текст А'. $count . 'Текст Б') : 'Текст В';?>

Где:
Если отзывы есть:
Текст А - до цифры кол-ва отзывов
Текст Б - после цифры кол-во отзывов

И если отзывов нет:
Текст В - текст выводящийся если отзывов нет.


______________________________________________________________________________________________
В Вашем случае надо сделать так:
Код:
<?php  echo $count ? ('Комментарии ('. $count . ')') : 'Комментарии (0)';?>
« Последнее редактирование: 11.04.2015, 22:19:29 от maxDPUA » Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet