Magento 2:在产品页面上显示每颗星的产品评分,平均评分和5星级的百分比


14

我想像这样在产品页面上显示评分:

在此处输入图片说明

  1. 有多少用户选择5/4/3/2/1星级
  2. 平均评分,以星标显示
  3. 选择5星评级的用户百分比

我需要为此添加自定义代码,所以请不要建议getReviewsSummaryHtml


您能在这里发布完整的解决方案吗?我需要做同样的事情,但是做得不好。
Jai

Answers:


9

创建并使用产品ID调用此新方法。另外,请确保您仅在管理员中启用了1个评分选项。

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;
    }

是的,我只有一个有效的管理员评分。所以让我尝试一下此代码
Ronak Chauhan

非常感谢:)工作正常。非常感谢
Ronak Chauhan

在何处将此代码添加到以上结果中?我需要做同样的事情。
Jai

@Jai,您必须将此代码放入任何自定义模块块文件中,然后从所需位置调用此方法。就像您可以从主题的评论列表页面中调用它一样。
Ashish Jagnani

能否请我照做?您可以添加您的工作方式。在查看列表页面中发布您创建的阻止代码以及如何调用。
Jai
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.