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 .


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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.