Magento 2: Pokaż oceny produktu dla każdej gwiazdy, średnie oceny i% z 5 gwiazdek na stronie produktu

14

Chcę wyświetlać oceny na stronie produktu w następujący sposób:

wprowadź opis zdjęcia tutaj

  1. Ilu użytkowników wybrało oceny 5/4/3/2/1 gwiazdek
  2. Średnia ocena wyświetlana jako gwiazdki
  3. Odsetek użytkowników wybrał ocenę 5 gwiazdek

Muszę do tego dodać niestandardowy kod, więc proszę nie sugerować getReviewsSummaryHtml .

Ronak Chauhan
źródło
Czy możesz tutaj napisać kompletne rozwiązanie? Muszę zrobić to samo, ale nie jestem w tym dobry.
Jai

Odpowiedzi:

9

Utwórz i wywołaj tę nową metodę z identyfikatorem produktu. Upewnij się także, że masz tylko 1 opcję oceny włączoną w adminie.

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
źródło
tak, mam tylko jedną ocenę aktywną od administratora. więc pozwól mi wypróbować ten kod
Ronak Chauhan
Wielkie dzięki :) Działa dobrze.
Jeszcze
Gdzie dodać ten kod do powyższego wyniku? Muszę zrobić to samo.
Jai
@Jai, musisz umieścić ten kod w dowolnym niestandardowym pliku bloku modułu i wywołać tę metodę z dowolnego miejsca. Jak możesz to nazwać ze strony listy recenzji swojego motywu.
Ashish Jagnani
Czy możesz to zrobić? Mogę odpowiednio śledzić? Możesz dodać, jak sobie radziłeś w pracy. Opublikuj kod utworzonego bloku i sposób wywoływania na stronie listy recenzji.
Jai