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 .


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.