0 Пользователей и 1 Гость просматривают эту тему.
  • 3 Ответов
  • 8208 Просмотров
*

20dollars

  • Захожу иногда
  • 235
  • 4 / 2
Стандартная система отзывов не удовлетворяет по причине отсутствия 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

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

Алеша

  • Новичок
  • 9
  • 0 / 0
Далее столкнулись  с проблемой счетчика количества отзывов в списке товаров категории, так как он считает только стандартные отзывы. Лечится просто: в файле /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

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

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

Вывод количества комментариев/отзывов в карточке товара
Спойлер
[свернуть]

Вывод количества комментариев/отзывов в категории список товаров
Спойлер
[свернуть]


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

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

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


______________________________________________________________________________________________
В Вашем случае надо сделать так:
Код
<?php  echo $count ? ('Комментарии ('. $count . ')') : 'Комментарии (0)';?>
« Последнее редактирование: 11.04.2015, 21:19:29 от maxDPUA »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Jcomments на странице категории?

Автор romagromov

Ответов: 5
Просмотров: 2570
Последний ответ 12.12.2022, 17:01:38
от sivers
Отображение аватаров из JomSocial в JComments

Автор smart

Ответов: 33
Просмотров: 16501
Последний ответ 20.07.2020, 21:31:50
от darkknight
jComments + AlptaUserPoints Добавить текст в Подробности

Автор Nabla

Ответов: 3
Просмотров: 5134
Последний ответ 22.06.2020, 14:14:08
от Nabla
Интеграция JComments с SP Page Builder

Автор Proaqua

Ответов: 5
Просмотров: 4057
Последний ответ 14.06.2020, 11:53:38
от xpank
Jcomments vs. SP Page Builder

Автор angry_ded_mazay

Ответов: 25
Просмотров: 9744
Последний ответ 14.06.2020, 09:25:28
от faritk