Вопрос

I want to display ratings on the product page like this:

enter image description here

  1. How many users selected 5/4/3/2/1 star ratings
  2. The average rating, displayed as stars
  3. Percentage of users selected a 5 star rating

I need to add custom code for that, so please don't suggest getReviewsSummaryHtml.

Это было полезно?

Решение

Create and call this new method with product ID. Also make sure you have only 1 rating option enable in admin.

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;
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top