我目前正在为网站制定评级系统,但我仍然坚持使用RAIN语言中的条件语句。我有两个问题:
这样离开会是一个问题,还是会降低网站的加载速度?
<div class="product-rating">
{% if (product.score * 5) < '1.3' %}
<i class="fa fa-star"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i>
{% endif %}
{% if (product.score * 5) > '1.3' and (product.score * 5) < '1.7' %}
<i class="fa fa-star"></i><i class="fa fa-star-half-o"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i>
{% endif %}
{% if (product.score * 5) > '1.7' and (product.score * 5) < '2.2' %}
<i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i>
{% endif %}
{% if (product.score * 5) > '2.2' and (product.score * 5) < '2.7' %}
<i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i>
{% endif %}
{% if (product.score * 5) > '2.7' and (product.score * 5) < '3.2' %}
<i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i>
{% endif %}
{% if (product.score * 5) > '3.2' and (product.score * 5) < '3.7' %}
<i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i><i class="fa fa-star-o"></i>
{% endif %}
{% if (product.score * 5) > '3.7' and (product.score * 5) < '4.2' %}
<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-o"></i>
{% endif %}
{% if (product.score * 5) > '4.2' and (product.score * 5) < '4.7' %}
<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-half-o"></i>
{% endif %}
{% if (product.score * 5) > '4.7' %}
<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>
{% endif %}
</div>
答案 0 :(得分:0)
尝试这个(不确定是否存在语法问题,因为我在这里写了..
我改变的是数字现在不是字符串,我不会跳过你为范围设置的所有数字。
使用elseif确认计算大于之前的IF。所以不应该有任何问题。
+这个计算分数* 5可以在IF语句如何出现之前进行。
<div class="product-rating">
{% if (product.score * 5) < 1.3 %}
<i class="fa fa-star"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i>
{% elseif (product.score * 5) < 1.7 %}
<i class="fa fa-star"></i><i class="fa fa-star-half-o"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i>
{% elseif (product.score * 5) < 2.2 %}
<i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i>
{% elseif (product.score * 5) < 2.7 %}
<i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i>
{% elseif (product.score * 5) < 3.2 %}
<i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-o"></i><i class="fa fa-star-o"></i>
{% elseif (product.score * 5) < 3.7 %}
<i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star"></i><i class="fa fa-star-half-o"></i><i class="fa fa-star-o"></i>
{% elseif (product.score * 5) < 4.2 %}
<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-o"></i>
{% elseif (product.score * 5) < 4.7 %}
<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-half-o"></i>
{% else %}
<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>
{% endif %}
</div>
答案 1 :(得分:0)
这是一个使用for循环的方法。
<div class="product-rating">
{% if (product.score * 5) < 1.3 %}
<i class="fa fa-star"></i>
{% endif %}
# array = [1.3,2.2,3.2,4.2]
{% for item in array %}
{% if if (product.score * 5) > item %}
<i class="fa fa-star"></i>
{% elseif (product.score * 5) < (item + 0.5) %}
<i class="fa fa-star-half-o"></i>
{% endif %}
{% endfor %}
{% if (product.score * 5) > 4.7 %}
<i class="fa fa-star"></i>
{% endif %}
</div>
&#13;
答案 2 :(得分:0)
最好实现一个绘制分数的函数,比如没有模板化:
function drawScore($score){
$solid = floor($score);
$empty = 4 - $solid;
$half = $score - $solid;
for($i = 1; $i <= $solid; $i++){
echo '<i class="fa fa-star"></i>';
}
if($half > 0){
echo '<i class="fa fa-star-half-o"></i>';
}
for($j = 0; $j < $empty; $j++){
echo '<i class="fa fa-star-o"></i>';
}
}
然后你在<div class="product-rating">
内所需要的只是调用函数:
$pScore = $product.score * 5;
drawScore($pScore);