Как на OpenCart 2.3 сделать рейтинг товаров как на Wildberries?

Здравствуйте. Искал плагин, но не нашел. Как можно на странице товара сделать вывод рейтинга товара таким образом?
5e9803e60adf6679585235.jpeg
Сейчас в шаблон передаются стандартно только такие переменные:
Обща оценка с округлением до целого: $rating
Количество оценок: $rating_data

А как мне получить количество оценок с рейтингом 1, с рейтином 2 и т.д.?
  • Вопрос задан
  • 1285 просмотров
Решения вопроса 1
lazuren
@lazuren
Смог смастерить вот это (OpenCart 3.0.3.2) :
В контроллере catalog/controller/product/product.php
После строки
$data['rating'] = (int)$product_info['rating'];
Вставляете
// Expanded rating
            $this->load->model('catalog/review');
            $review_total = $this->model_catalog_review->getTotalReviewsByProductId($this->request->get['product_id']);
            $estimations = $this->model_catalog_review->getReviewsByProductId($this->request->get['product_id']);

            $one = 0;
            $two = 0;
            $three = 0;
            $four = 0;
            $five = 0;
            $rating_sum = 0;

            foreach ($estimations as $estimation){
                ($estimation['rating'] == '1') && $one++;
                ($estimation['rating'] == '2') && $two++;
                ($estimation['rating'] == '3') && $three++;
                ($estimation['rating'] == '4') && $four++;
                ($estimation['rating'] == '5') && $five++;

                $rating_sum += $estimation['rating'];
            }

            $data['expanded_rating'][] = array(
                'one' => round((100/$review_total) * $one),
                'two' => round((100/$review_total) * $two),
                'three' => round((100/$review_total) * $three),
                'four' => round((100/$review_total) * $four),
                'five' => round((100/$review_total) * $five),
                'rating' => round($rating_sum / $review_total, 1),
                'total' => $review_total
            );

Далее в файле
catalog/view/theme/default/template/product/product.twig

после строки
<p>{% for i in 1..5 %}
              {% if rating < i %}<span class="fa fa-stack"><i class="fa fa-star-o fa-stack-1x"></i></span>{% else %}<span class="fa fa-stack"><i class="fa fa-star fa-stack-1x"></i><i class="fa fa-star-o fa-stack-1x"></i></span>{% endif %}
              {% endfor %} <a href="" onclick="$('a[href=\'#tab-review\']').trigger('click'); return false;">{{ reviews }}</a> / <a href="" onclick="$('a[href=\'#tab-review\']').trigger('click'); return false;">{{ text_write }}</a></p>
            <hr>

Вставляете
{% for rating in expanded_rating %}
                  <p>1 - {{ rating.one }}%</p>
                  <p>2 - {{ rating.two }}%</p>
                  <p>3 - {{ rating.three }}%</p>
                  <p>4 - {{ rating.four }}%</p>
                  <p>5 - {{ rating.five }}%</p>
                  <h3>Общий рейтинг - {{ rating.rating }}</h3>
                  <p>На основании {{ rating.total }} отзывов</p>
              {% endfor %}
              <hr>


Получиться должно так
5e98c4b75cc24861087497.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы