【发布时间】:2011-01-15 19:14:25
【问题描述】:
我在 Jekyll 网站上工作,并试图输出嵌套在行 div 中的三列 div。 Liquid 使用他们的 cycle 过滤器使这变得非常容易:
{% for p in site.categories.post %}
{% cycle 'add rows': '<div class="row">', nil, nil %}
<div class="column">
<a href="{{ p.url }}">{{ p.title }}</a>
</div>
{% cycle 'close rows': nil, nil, '</div>' %}
{% endfor %}
但是,这仅在有 3、6、9 等帖子时才真正有效。当帖子总数不是三的倍数时,<div class="row"> 永远不会关闭——for 循环在结束标记可以作为close rows 循环的一部分输出之前结束。
在 Ruby、PHP 或任何其他语言中,我可以使用模数运算符轻松解决此问题,因此除了 close rows 循环之外,我会在 if site.categories.size % 3 == 0 时输出 </div>。然而,Liquid,因为它是一种安全的模板语言,不支持模数。
当帖子总数不是三的倍数时,我还能做些什么来正确关闭<div class="row">?
【问题讨论】: