Magento 2:製品ページに各星の製品評価、平均評価、5つ星評価の割合を表示


14

次のように製品ページに評価を表示したい:

ここに画像の説明を入力してください

  1. 5/4/3/2/1の星評価を選択したユーザーの数
  2. 星として表示される平均評価
  3. 5つ星の評価を選択したユーザーの割合

そのためのカスタムコードを追加する必要があるため、getReviewsSummaryHtmlを提案しないでください。


完全なソリューションをここに投稿していただけますか?私は同じことをする必要がありますが、それをするのは良くありません。
ジャイ

回答:


9

製品IDでこの新しいメソッドを作成して呼び出します。また、adminで有効にする評価オプションが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;
    }

はい、管理者からアクティブな評価は1つだけです。このコードを試してみましょう
ロナックチャウハン

どうもありがとう:)それはうまく働いています。再び多くの感謝
ロナックチャウハン

上記の結果にこのコードを追加する場所は?同じことをする必要があります。
ジャイ

@Jai、このコードをカスタムモジュールブロックファイルに配置し、このメソッドを必要な場所から呼び出す必要があります。テーマのレビューリストページから呼び出すことができるように。
アシッシュジャグナーニ

それに従っていただけますか?作業で行った方法を追加できます。作成したブロックのコードと、どのように呼び出すかをレビューリストページに投稿します。
ジャイ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.