Magento2 Sterne für Produkte ohne Bewertungen in Kategorieansicht anzeigen

Standardmäßig werden in Magento2 nur Sterne für Produkte angezeigt, die bereits bewertet wurden. Dies kann über wenige Änderungen im eigenen Theme angepasst werden.

Zunächst muss das Product/List Template ins eigene Theme kopiert werden, falls es dort noch nicht vorhanden ist:

mkdir -p app/design/frontend/vendor/theme/Magento_Catalog/templates/product/
cp -aR vendor/magento/module-catalog/view/frontend/templates/product/list.phtml app/design/frontend/vendor/theme/Magento_Catalog/templates/product/list.phtml

Im Anschluss muss in der Funktion getReviewsSummaryHtml der Parameter displayIfNoReviews auf true gesetzt werden:

73c73
<                         <?= $block->getReviewsSummaryHtml($_product, $templateType) ?>
---
>                         <?= $block->getReviewsSummaryHtml($_product, $templateType, true) ?>

Normalerweise wird nun folgender Text angezeigt: "Seien Sie der Erste, der dieses Produkt bewertet". Um stattdessen 5 graue Sterne anzuzeigen überschreibe ich noch das summary_short Template in meinem Theme. Hierzu lege ich folgenden Pfad inkl. Datei an: app/design/frontend/vendor/theme/Magento_Review/templates/helper/summary_short.phtml und befülle sie mit folgendem Inhalt:

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

/** @var \Magento\Review\Block\Product\ReviewRenderer $block */

$url = $block->getReviewsUrl() . '#reviews';
$urlForm = $block->getReviewsUrl() . '#review-form';

$reviewsCount = $block->getReviewsCount();
if (!$reviewsCount && $block->getProduct()->getRatingSummary()) {
    $reviewsCount = $block->getProduct()->getRatingSummary()->getReviewsCount();
}

?>
<?php if ($block->isReviewEnabled() && $reviewsCount) : ?>
    <?php $rating = serialize($block->getRatingSummary()); ?>
    <div class="product-reviews-summary short<?= !$rating ? ' no-rating' : '' ?>">
        <?php if ($rating) :?>
        <div class="rating-summary">
            <span class="label"><span><?= $block->escapeHtml(__('Rating')) ?>:</span></span>
            <div class="rating-result" title="<?= $block->escapeHtmlAttr($rating) ?>%">
                <span style="width:<?= $block->escapeHtmlAttr($rating) ?>%"><span><?= $block->escapeHtml($rating) ?>%</span></span>
            </div>
        </div>
        <?php endif;?>
        <div class="reviews-actions">
            <a class="action view" href="<?= $block->escapeUrl($url) ?>"><?= $block->escapeHtml($block->getReviewsCount()) ?>&nbsp;<span><?= ($block->getReviewsCount() == 1) ? $block->escapeHtml(__('Review')) : $block->escapeHtml(__('Reviews')) ?></span></a>
        </div>
    </div>
<?php elseif ($block->isReviewEnabled() && $block->getDisplayIfEmpty()) : ?>
    <div class="product-reviews-summary short empty">
        <div class="rating-summary">
            <span class="label"><span><?= $block->escapeHtml(__('Rating')) ?>:</span></span>
            <div class="rating-result" title="<?= $block->escapeHtml(__('Be the first to review this product')) ?>">
                <span style="width:0%"><span><?= $block->escapeHtml(__('Be the first to review this product')) ?></span></span>
            </div>
        </div>
        <div class="reviews-actions">
            <a class="action view" href="<?= $block->escapeUrl($url) ?>"><?= $block->escapeHtml($block->getReviewsCount()) ?>&nbsp;<span><?= ($block->getReviewsCount() == 1) ? $block->escapeHtml(__('Review')) : $block->escapeHtml(__('Reviews')) ?></span></a>
        </div>
    </div>
<?php endif; ?>

Die Datei kann dann noch entsprechend auf die eigenen Bedürfnisse angepasst werden. Zu kann man zB den Zusatz "0 Bewertungen" ändern oder entfernen.

Nicht vergessen den Cache zu leeren:

bin/magento c:c

schneidewind.it

Oberdorfstr. 1
78247 Hilzingen-Duchtlingen
Deutschland

Tel.: +49 (0) 7731 5959 441
E-Mail: info@schneidewind.it