[...]
Die Prozentzahlen kann man, wenn man es wünscht natürlich noch runden.
[...]
Habe festgestellt, dass einfaches Runden der Prozentzahlen auch nicht immer zu optisch schönen Ergebnissen führt, deshalb habe ich den Vorschlag aus
Antwort #121 überarbeitet.
Hier der überarbeitete Code für die .html Datei.
{assign 'PRODUCTS_AVERAGE_RATING' 3.24}
Wert: Ø {$PRODUCTS_AVERAGE_RATING} von 5 ergibt {100/5*$PRODUCTS_AVERAGE_RATING}% am Nächsten ist {(100/5*$PRODUCTS_AVERAGE_RATING)|getClosest:[7, 10, 14, 20, 27, 30, 34, 40, 47, 50, 54, 60, 67, 70, 74, 80, 87, 90, 94, 100]}%
<br>
{* Idee von hier -> https://gist.github.com/NLDev/464b08135138f1c1a135053a898b1a79 *}
<style>
.rating {
display: inline-block;
unicode-bidi: bidi-override;
color: #ced2d3;
font-size: 12px;
height: 14px;
width: auto;
margin: 0;
position: relative;
padding: 0;
}
.rating-upper {
color: #f4c311;
padding: 0;
position: absolute;
z-index: 1;
display: flex;
top: 0;
left: 0;
overflow: hidden;
}
.rating-lower {
padding: 0;
display: flex;
z-index: 0;
}
</style>
<div class="rating">
<div class="rating-upper" style="width: {(100/5*$PRODUCTS_AVERAGE_RATING)|getClosest:[7, 10, 14, 20, 27, 30, 34, 40, 47, 50, 54, 60, 67, 70, 74, 80, 87, 90, 94, 100]}%;">
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
</div>
<div class="rating-lower">
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
<i class="fa fa-star"></i>
</div>
</div>
Und hier die nun zusätzlich benötigte Funktion.
Im Ordner includes/extra/functions/ die Datei sinniger_name.php mit folgendem Inhalt erstellen.
<?php// Code von hier -> https://stackoverflow.com/questions/5464919/find-a-matching-or-closest-value-in-an-arrayfunction getClosest
($search, $arr) { $closest = null; foreach ($arr as $item) { if ($closest === null || abs($search - $closest) > abs($item - $search)) { $closest = $item; } } return $closest;} Und so funktioniert es:
Aus dem Durschnittswert (0 bis 5 auf zwei Kommastellen) aller Bewertungen für ein Produkt wird die Prozentzahl ermittelt, diese wird dann mit den Zahlen [7, 10, 14, 20, 27, 30, 34, 40, 47, 50, 54, 60, 67, 70, 74, 80, 87, 90, 94, 100] verglichen und diejenige Zahl die der Prozentzahl am nächsten ist wird als neue Prozentzahl welche das gelb Einfärben der Sterne steuert übernommen.
[ Für Gäste sind keine Dateianhänge sichtbar ]
Gruss
Hanspeter