Magento 2: Показать оценки продуктов для каждой звезды, средние оценки и% 5-звездочных оценок на странице продукта

14

Я хочу отображать оценки на странице продукта следующим образом:

введите описание изображения здесь

  1. Сколько пользователей выбрали рейтинг 5/4/3/2/1 звезды
  2. Средний рейтинг, отображаемый в виде звезд
  3. Процент пользователей, выбравших 5-звездочный рейтинг

Мне нужно добавить пользовательский код для этого, поэтому, пожалуйста, не предлагайте getReviewsSummaryHtml .

Ронак Чаухан
источник
Можете ли вы опубликовать полное решение здесь? Мне нужно делать то же самое, но не очень хорошо.
Jai

Ответы:

9

Создайте и вызовите этот новый метод с идентификатором продукта. Также убедитесь, что у вас есть только одна опция рейтинга в админке.

public function getAllStart($pid) {
    $review = $this->_objectReview->getCollection()     //\Magento\Review\Model\Review $reviewFactory (_objectReview)
            ->addFieldToFilter('main_table.status_id', 1)
            ->addEntityFilter('product', $pid)          //$pid = > your current product ID
            ->addStoreFilter($this->_storeManager->getStore()->getId())
            ->addFieldToSelect('review_id')
    ;
    $review->getSelect()->columns('detail.detail_id')->joinInner(
            ['vote' => $review->getTable('rating_option_vote')], 'main_table.review_id = vote.review_id', array('review_value' => 'vote.value')
    );
    $review->getSelect()->order('review_value DESC');
    $review->getSelect()->columns('count(vote.vote_id) as total_vote')->group('review_value');
    for ($i = 5; $i >= 1; $i--) {
        $arrRatings[$i]['value'] = 0;
    }
    foreach ($review as $_result) {
        $arrRatings[$_result['review_value']]['value'] = $_result['total_vote'];
    }
    return $arrRatings;
    }
Ашиш Джагнани
источник
да, у меня есть только один активный рейтинг от администратора. так что позвольте мне попробовать этот код
Ронак Чаухан
Большое спасибо :) Работает нормально. Еще раз большое спасибо
Ронак Чаухан
Где добавить этот код в приведенный выше результат? Мне нужно сделать то же самое.
Jai
@Jai, Вы должны поместить этот код в любой файл блока своего пользовательского модуля и вызывать этот метод из любого места. Как вы можете позвонить со страницы списка обзора вашей темы.
Ашиш Джагнани
Можете ли вы сделать так, чтобы я мог следовать соответствующим образом? Вы можете добавить, как вы сделали в своей работе. Разместите код созданного вами блока и способ его вызова на странице списка отзывов.
Jai