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 .

Ronak Chauhan
la source
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;
    }
Ashish Jagnani
la source
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