если нужно вывести из TV-параметра - давным-давно себе писал сниппет:
$value = (isset($value)) ? $value : null;
$of = (isset($of)) ? $of : 5;
if (isset($value) && !empty($value)) {
$value = floatval($value);
$out = "<span class=\"raiting\">";
for ($i = 1; $i <= $of; $i++) {
switch (true) {
case ($i-1 < $value && $i > $value):
$out .= "<i class=\"half\"></i>";
break;
case ($i > $value):
$out .= "<i class=\"empty\"></i>";
break;
case ($i < $value):
$out .= "<i class=\"full\"></i>";
break;
}
}
$out .= "</span>";
return $out;
}
в параметр value передаём число для отображения, в of - всего звёздочек, вывод стилизуем через CSS примерно так:
/* raiting */
.raiting {
display: inline-block;
vertical-align: top;
margin: 5px 0;
}
.raiting>i {
display: inline-block;
margin: 0 3px 0 0;
width: 12px;
height: 12px;
background: url(../i/star-empty.svg) no-repeat center center;
background-size: contain;
}
.raiting>i:last-child {
margin: 0;
}
.raiting>i.full {
background: url(../i/star-full.s