2017-05-26 103 views
1

对于复杂网格(标记为简单的单层HTML列表),我在for循环中对loop.index存在问题。我在网格“单元格”(a <li>)的一个树枝部分中有一个loop_index变量,它等于loop.index针对树枝中x到y的每个第n个索引

最初,我对循环中的第一个项目进行了简单的基于特定数字的检查。

{% 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类(橙色,绿色):

  • 2 -4 - 橙
  • (重复图案从这里开始:)
  • 5-7 - 绿色(批3)
  • 8-11 - 橙色(批次的4)
  • 12-14 - 绿色(批次3)
  • 15-18 - 橙色(批次的4)
  • 19-21 - 绿色(批3)
  • 22-25 - 橙色(批次的4)
  • ...

我试图雇用batchcycle,但他们似乎不适合这一点。 batch似乎不适用于“无限制”循环,并且cycle似乎对于批量相同项目的重复模式(而不是循环通过未分组的单个项目)是不好的。在这种情况下,divisible by也不适合我。

如何根据loop.index的值更改班级?我不能在这里使用for循环或在其外面工作 - 所有工作都需要在网格“单元”内完成。

回答

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

+0

谢谢利玛窦,它的工作好!我不知道这样一个表达式'loop_index%7> = 1'是可能的。 – certainlyakey

相关问题