Magento2 Sterne für Produkte ohne Bewertungen in Kategorieansicht anzeigen

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()) ?> <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()) ?> <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
Sei der erste der kommentiert