Magento 2: mostre classificações de produtos para cada estrela, classificações médias e% de 5 estrelas na página do produto

14

Quero exibir classificações na página do produto desta forma:

insira a descrição da imagem aqui

  1. Quantos usuários selecionaram classificações de 5/4/3/2/1 estrelas
  2. A classificação média, exibida como estrelas
  3. Porcentagem de usuários selecionados uma classificação de 5 estrelas

Preciso adicionar um código personalizado para isso. Por isso, não sugiro getReviewsSummaryHtml .

Ronak Chauhan
fonte
Você pode postar sua solução completa aqui? Eu preciso fazer o mesmo, mas não é bom em fazê-lo.
Jai

Respostas:

9

Crie e chame esse novo método com o ID do produto. Verifique também se você tem apenas 1 opção de classificação ativada no administrador.

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
fonte
Sim, tenho apenas uma classificação ativa do administrador. então deixe-me tentar este código
Ronak Chauhan
Muito obrigado :) Está funcionando bem. Muito obrigado novamente
Ronak Chauhan
Onde adicionar esse código ao resultado acima? Eu preciso fazer a mesma coisa.
Jai
@Jai, você precisa colocar esse código em qualquer arquivo de bloco de módulo personalizado e chamar esse método de onde quiser. Como você pode chamá-lo na página da lista de revisão do seu tema.
Ashish Jagnani
Você pode, por favor, para que eu possa seguir em conformidade? Você pode adicionar como você fez em seu trabalho. Poste o código do bloco que você criou e como você chama na página da lista de revisão.
Jai