Отзывы с оценкой товара
Стоит задача сделать отзывы в интерент-магазине, с возможностью ставить оценку товара по 5-бальной шкале. Возможно кто-то встречался уже с похожей задачей и может подсказать, на чем это проще/быстрее реализовать? Буду очень признателен за помощь. С помощью существующих расширений Quip, Tickets,
modxTalks не получается — не понимаю, как можно к комментарию еще одно поле прикрутить, в которое бы сохранялся рейтинг отзыва.
modxTalks не получается — не понимаю, как можно к комментарию еще одно поле прикрутить, в которое бы сохранялся рейтинг отзыва.
Комментарии: 21
У Василия всё предусмотрено)
Всё что тебе нужно это исправить чанк с формой добавления комментария и чанк вывода комментария.
Например я сделал так — добавил вот этот скрипт в шаблоне:
github.com/javiertoledo/bootstrap-rating-input
Далее в форму комментария добавил такой код:
Всё что тебе нужно это исправить чанк с формой добавления комментария и чанк вывода комментария.
Например я сделал так — добавил вот этот скрипт в шаблоне:
github.com/javiertoledo/bootstrap-rating-input
Далее в форму комментария добавил такой код:
<div class="form-group">
<label for="">Оценить товар</label>
<input type="number" name="starrating" id="starrating" class="rating" data-max="5" data-min="1" data-clearable="Очистить"/>
</div>
В чанк вывода такой:<div class="starrating">
<label for="">Оценка товара: [[+properties.starrating]]</label>
</div>
Всё! Никаких изменений в код компонента вносить не нужно. Всё само подцепляется и работает.
Павел, спасибо! Отличное, простое решение. Осталось еще написать сниппет, который бы выводил среднюю оценку по товару. Сделаю — выложу код сниппета, вдруг кому нибудь пригодится.
А киньте ссылку посмотреть как это выглядит…
В этом магазине оценка товара не нужна. Делал специально к этому вопросу и убрал))
каким образом вывести рейтинг через pdoRecources?
Сделаю — выложу код сниппета, вдруг кому нибудь пригодится.Богдан
Выложи, пожалуйста, если сделал. Нужен рейтинг для товаров в категориях выводить, не могу понять как вывести.
Есть вот такое дополнение CSS Star Rating. Правда сам не пробовал.
Им не выходит показывать среднее значение в категориях у каждого товара. Воспользовался Lexrating, но там проблема с ajax при работе фильтра и пагинации.
Вообщем сделал костыль, который считает среднюю оценку и выводит ее. Вот код сниппета:
<?php
$sql = "SELECT C.properties AS prop FROM modx_tickets_comments C LEFT JOIN modx_tickets_threads D
ON C.thread=D.id WHERE D.resource = ".$id;
$q = $modx->prepare($sql);
$q->execute(array(0));
$arr = $q->fetchAll(PDO::FETCH_ASSOC);
foreach ($arr as $arr_one) {
$tmp = json_decode($arr_one["prop"], true)["starrating"];
$all[] = $tmp;
}
$middle = number_format(array_sum($all)/count($all), 1, '.', '' );
if (count($all) == 0) {
$result = "";
} else {
$result = '<span itemprop="review" itemscope itemtype="http://data-vocabulary.org/Review-aggregate"><span class="stars"
itemprop="rating">'.$middle.'</span>Рейтинг '.$middle.' на основе <span itemprop="count">'.count($arr).'</span> отзывов</span>';
}
$modx->setPlaceholders(array(
'rating' => $result,
'ratingCount' => "(".count($all).")"
));
В плейсхолдер [[+rating]] выводится средняя оценка, а в [[+ratingCount]] — количество оценок. Все это делалось ради одной цели — красивого сниппета в выдаче гугла.
К сожалению, у меня сниппет не сработал. Но помогла вот эта статья — httpmaster.ru/izmeneniya-v-modx-i-rasshireniyax/css-starrating-i-mikrorazmetka.html
Может кому пригодится.
Может кому пригодится.
у вас вероятнее всего он не сработал, потому что не определилась переменная $id, чтобы все заработало просто вставьте в самом начале кода перед переменной $sql,
$id = $modx->resource->get('id');
и все заработает
$id = $modx->resource->get('id');
и все заработает
Выводить в списке товаров не пробовали? в карточке норм, а вот в списке под каждым товаром как вывести?
А по поводу оформления оценки — смотри сюда.
что то не выходит
Прописываю
Прописываю
<script type="text/javascript">
$(function () {
$('span.stars').stars();
});
$.fn.stars = function () {
return $(this).each(function () {
$(this).html($('<span />').width(Math.max(0, (Math.min(5, parseFloat($(this).html())))) * 16));
});
}
</script>
Отображаются пустые звездочки.
Вообщем эта проблема решилась сменой версии juery, а вот при фильтрации и пагинации, скрипт перестает работать как и в lexrating.
Этот js скрипт не работает с динамически созданным контентом. Как вариант — переделать немного сниппет и выводить звезды на чистом CSS (без JS)
Может краудфоундинг устроить?
Мне тоже очень нужны рейтинговые отзывы к товарам и оценка полезности этого отзыва другими участниками (ну тут стандартный рейтинг комментов tickets хватит). В итоге получится как на яндекс.маркете. Готов под это дело выделить денег. Сколько будет стоить?
Мне тоже очень нужны рейтинговые отзывы к товарам и оценка полезности этого отзыва другими участниками (ну тут стандартный рейтинг комментов tickets хватит). В итоге получится как на яндекс.маркете. Готов под это дело выделить денег. Сколько будет стоить?
Про easyComm никто не слышал что ли? Всё работает из коробки)
modstore.pro/packages/utilities/easycomm
modstore.pro/packages/utilities/easycomm
Еще бы старее тему откапали, в 2014 не было этого компонента
Не я откопал, в новостях отобразилась, а я что-то не обратил внимания на дату. Назад в будущее))
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.