Magento 2: Tampilkan peringkat produk untuk setiap bintang, peringkat rata-rata dan% dari peringkat bintang 5 di halaman produk

14

Saya ingin menampilkan peringkat pada halaman produk seperti ini:

masukkan deskripsi gambar di sini

  1. Berapa banyak pengguna yang memilih peringkat bintang 5/4/3/2/1
  2. Peringkat rata-rata, ditampilkan sebagai bintang
  3. Persentase pengguna memilih peringkat bintang 5

Saya perlu menambahkan kode khusus untuk itu, jadi tolong jangan menyarankan getReviewsSummaryHtml .

Ronak Chauhan
sumber
Bisakah Anda memposting solusi lengkap di sini? Saya perlu melakukan hal yang sama tetapi tidak baik dalam melakukannya.
Jai

Jawaban:

9

Buat dan panggil metode baru ini dengan ID produk. Pastikan juga Anda hanya mengaktifkan 1 opsi peringkat di 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;
    }
Ashish Jagnani
sumber
ya, saya hanya punya satu peringkat aktif dari admin. jadi izinkan saya mencoba kode ini
Ronak Chauhan
Terima kasih banyak :) Ini bekerja dengan baik. Banyak terima kasih banyak lagi
Ronak Chauhan
Di mana menambahkan kode ini ke hasil di atas? Saya perlu melakukan hal yang sama.
Jai
@Jai, Anda harus meletakkan kode ini di salah satu file blok modul khusus Anda dan memanggil metode ini dari tempat yang Anda inginkan. Seperti Anda dapat memanggilnya dari halaman daftar ulasan tema Anda.
Ashish Jagnani
Bisakah Anda melakukannya agar saya dapat mengikuti? Anda dapat menambahkan apa yang telah Anda lakukan dalam pekerjaan Anda. Posting kode blok yang Anda buat dan bagaimana Anda memanggil di halaman daftar ulasan.
Jai