Magento 2: muestra calificaciones de productos para cada estrella, calificaciones promedio y% de calificaciones de 5 estrellas en la página del producto

14

Quiero mostrar clasificaciones en la página del producto como esta:

ingrese la descripción de la imagen aquí

  1. ¿Cuántos usuarios seleccionaron calificaciones de 5/4/3/2/1 estrellas?
  2. La calificación promedio, mostrada como estrellas
  3. Porcentaje de usuarios que seleccionaron una calificación de 5 estrellas

Necesito agregar un código personalizado para eso, así que no sugiera getReviewsSummaryHtml .

Ronak Chauhan
fuente
¿Puedes publicar tu solución completa aquí? Necesito hacer lo mismo pero no es bueno hacerlo.
Jai

Respuestas:

9

Cree y llame a este nuevo método con ID de producto. También asegúrese de tener solo 1 opción de calificación habilitada en 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
fuente
Sí, solo tengo una calificación activa de administrador. así que déjenme probar este código
Ronak Chauhan
Muchas gracias :) Está funcionando bien. Muchas, muchas gracias de nuevo
Ronak Chauhan
¿Dónde agregar este código al resultado anterior? Necesito hacer lo mismo.
Jai
@Jai, debe poner este código en cualquiera de sus archivos de bloque de módulos personalizados y llamar a este método desde donde desee. Al igual que puede llamarlo desde la página de lista de revisión de su tema.
Ashish Jagnani
¿Puedes por favor hacer que pueda seguir en consecuencia? Puede agregar cómo lo había hecho en su trabajo. Publique el código de bloqueo que creó y cómo llama en la página de lista de revisión.
Jai