我在复杂网格的loop.index
循环中遇到for
问题(标记为简单的单级HTML列表)。我在网格“单元格”(a loop_index
)的树枝部分中有一个<li>
变量,它等于loop.index
。
最初我有这个简单的特定数字检查循环中的第一项。
{% set class = 'green' %}
{% if (loop_index > 1 and loop_index < 5) or (loop_index > 7 and loop_index < 12) %}
{% set class = 'orange' %}
{% endif %}
但是现在它应该扩展为在循环中包含可能无限数量的项目。因此,不仅项目2-4和8-11将变为orange
,而且还会变为15-18等。
基本上我需要以这种方式循环使用2个类(橙色,绿色):
我尝试使用batch
和cycle
,但这似乎不合适。 batch
似乎不适用于“无限制”循环,cycle
似乎不适用于具有相同项目批次的重复模式(而不是循环通过未分组的单个项目)。在这种情况下,divisible by
对我来说也不起作用。
如何根据loop.index
的值更改类?我无法使用for
循环或其外部 - 所有工作都需要在网格“单元格”部分内完成。
答案 0 :(得分:0)
您可以查看rest of the division。这是一个有效的解决方案:
{% for i in 1..30 %}
{% set class = 'green' %}
{% set loop_index = loop.index %}
{% if (loop_index %7 >= 1 and loop_index %7 < 5) %}
{% set class = 'orange' %}
{% endif %}
* {{ i }} {{class}}
{% endfor %}
这将输出为:
* 5 green
* 6 green
* 7 green
* 8 orange
* 9 orange
* 10 orange
* 11 orange
* 12 green
* 13 green
* 14 green
* 15 orange
* 16 orange
* 17 orange
* 18 orange
* 19 green
* 20 green
* 21 green
* 22 orange
* 23 orange
* 24 orange
* 25 orange
* 26 green
* 27 green
您可以查看输出in this working twigfiddle