Magento 2: Afficher les notes de produit pour chaque étoile, les notes moyennes et le% de notes de 5 étoiles sur la page produit


14

Je souhaite afficher les notes sur la page du produit comme ceci:

entrez la description de l'image ici

  1. Combien d'utilisateurs sélectionnés 5/4/3/2/1 étoiles
  2. La note moyenne, affichée sous forme d'étoiles
  3. Pourcentage d'utilisateurs sélectionnés avec 5 étoiles

Je dois ajouter du code personnalisé pour cela, donc ne suggérez pas getReviewsSummaryHtml .


Pouvez-vous poster votre solution complète ici? J'ai besoin de faire la même chose mais pas bon pour le faire.
Jai

Réponses:


9

Créez et appelez cette nouvelle méthode avec l'ID produit. Assurez-vous également que vous n'avez qu'une seule option de notation activée dans 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;
    }

oui, je n'ai qu'une seule évaluation active de l'administrateur. alors laissez-moi essayer ce code
Ronak Chauhan

Merci beaucoup :) Ça marche bien. Merci beaucoup encore
Ronak Chauhan

Où ajouter ce code au résultat ci-dessus? Je dois faire la même chose.
Jai

@Jai, vous devez mettre ce code dans l'un de vos fichiers de bloc de module personnalisé et appeler cette méthode à partir de l'endroit où vous le souhaitez. Comme vous pouvez l'appeler à partir de la page de liste de révision de votre thème.
Ashish Jagnani

Pouvez-vous le faire, je peux suivre en conséquence? Vous pouvez ajouter comment vous aviez fait dans votre travail. Publiez le code du bloc que vous avez créé et comment vous appelez sur la page de la liste de révision.
Jai
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.