Отзывы с оценкой товара

Стоит задача сделать отзывы в интерент-магазине, с возможностью ставить оценку товара по 5-бальной шкале. Возможно кто-то встречался уже с похожей задачей и может подсказать, на чем это проще/быстрее реализовать? Буду очень признателен за помощь. С помощью существующих расширений Quip, Tickets,
modxTalks не получается — не понимаю, как можно к комментарию еще одно поле прикрутить, в которое бы сохранялся рейтинг отзыва.
Богдан
16 августа 2014, 16:07
modx.pro
15
7 428
0

Комментарии: 21

Павел Пустота
17 августа 2014, 19:49
4
+5
У Василия всё предусмотрено)
Всё что тебе нужно это исправить чанк с формой добавления комментария и чанк вывода комментария.
Например я сделал так — добавил вот этот скрипт в шаблоне:
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>
Всё! Никаких изменений в код компонента вносить не нужно. Всё само подцепляется и работает.
    Богдан
    18 августа 2014, 20:20
    1
    0
    Павел, спасибо! Отличное, простое решение. Осталось еще написать сниппет, который бы выводил среднюю оценку по товару. Сделаю — выложу код сниппета, вдруг кому нибудь пригодится.
      Володя
      19 августа 2014, 09:47
      0
      А киньте ссылку посмотреть как это выглядит…
        Павел Пустота
        19 августа 2014, 09:50
        0
        В этом магазине оценка товара не нужна. Делал специально к этому вопросу и убрал))
        but1head
        22 апреля 2015, 21:28
        0
        каким образом вывести рейтинг через pdoRecources?
        Антон Левиц
        Антон Левиц
        13 ноября 2014, 14:55
        0
        Сделаю — выложу код сниппета, вдруг кому нибудь пригодится.
        Богдан

        Выложи, пожалуйста, если сделал. Нужен рейтинг для товаров в категориях выводить, не могу понять как вывести.
          Сергей Шлоков
          13 ноября 2014, 22:43
          0
          Есть вот такое дополнение CSS Star Rating. Правда сам не пробовал.
            Антон Левиц
            Антон Левиц
            21 ноября 2014, 17:39
            0
            Им не выходит показывать среднее значение в категориях у каждого товара. Воспользовался Lexrating, но там проблема с ajax при работе фильтра и пагинации.
              Богдан
              21 ноября 2014, 18:11
              +1
              Вообщем сделал костыль, который считает среднюю оценку и выводит ее. Вот код сниппета:
              <?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]] — количество оценок. Все это делалось ради одной цели — красивого сниппета в выдаче гугла.
                Светлана Закревская
                21 октября 2016, 23:34
                0
                К сожалению, у меня сниппет не сработал. Но помогла вот эта статья — httpmaster.ru/izmeneniya-v-modx-i-rasshireniyax/css-starrating-i-mikrorazmetka.html
                Может кому пригодится.
                  Дмитрий
                  09 сентября 2019, 12:53
                  0
                  у вас вероятнее всего он не сработал, потому что не определилась переменная $id, чтобы все заработало просто вставьте в самом начале кода перед переменной $sql,

                  $id = $modx->resource->get('id');

                  и все заработает
                  дмитрий
                  07 июля 2021, 14:15
                  0
                  Выводить в списке товаров не пробовали? в карточке норм, а вот в списке под каждым товаром как вывести?
                  Богдан
                  21 ноября 2014, 18:16
                  0
                  А по поводу оформления оценки — смотри сюда.
                    Антон Левиц
                    Антон Левиц
                    21 ноября 2014, 20:32
                    0
                    что то не выходит
                    Прописываю
                    <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>
                    Отображаются пустые звездочки.
                      Антон Левиц
                      Антон Левиц
                      21 ноября 2014, 20:53
                      0
                        Антон Левиц
                        Антон Левиц
                        21 ноября 2014, 22:45
                        0
                        Вообщем эта проблема решилась сменой версии juery, а вот при фильтрации и пагинации, скрипт перестает работать как и в lexrating.
                          Богдан
                          22 ноября 2014, 12:01
                          0
                          Этот js скрипт не работает с динамически созданным контентом. Как вариант — переделать немного сниппет и выводить звезды на чистом CSS (без JS)
                Mihan
                22 ноября 2014, 13:24
                0
                Может краудфоундинг устроить?

                Мне тоже очень нужны рейтинговые отзывы к товарам и оценка полезности этого отзыва другими участниками (ну тут стандартный рейтинг комментов tickets хватит). В итоге получится как на яндекс.маркете. Готов под это дело выделить денег. Сколько будет стоить?
                  Николай
                  22 октября 2016, 03:00
                  0
                  Про easyComm никто не слышал что ли? Всё работает из коробки)

                  modstore.pro/packages/utilities/easycomm
                    but1head
                    22 октября 2016, 03:39
                    0
                    Еще бы старее тему откапали, в 2014 не было этого компонента
                      Николай
                      22 октября 2016, 03:56
                      0
                      Не я откопал, в новостях отобразилась, а я что-то не обратил внимания на дату. Назад в будущее))
                    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                    21