如果我在Liquid(使用Jekyll)中有一个for循环,如何仅针对偶数(或奇数)项进行操作?我已经尝试过:
{% for item in site.posts %}
{% if forloop.index % 2 == 1 %}
但似乎不起作用。我还尝试过:
(forloop.index % 2) == 1
并且:
forloop.index - (forloop.index / 2 * 2) == 1
我认为你需要使用 cycle 标签来实现此功能。例如:
{% for post in site.categories.articles %}
<article class="{% cycle 'odd', 'even' %}"></article>
{% endfor %}
如果您希望每个周期使用不同的HTML标记:
{% for item in site.posts %}
{% capture thecycle %}{% cycle 'odd', 'even' %}{% endcapture %}
{% if thecycle == 'odd' %}
<div>echo something</div>
{% endif %}
{% endfor %}
您可以在Liquid for Designers上找到更多的信息,但那里的示例并不是特别有帮助。 这个Shopify支持主题也应该会有所帮助。Liquid
中确实有一个 modulo
函数 - 即modulo
过滤器。
使用这个过滤器,你可以这样做:
{% for item in site.posts %}
{% assign mod = forloop.index | modulo: 2 %}
{% if mod == 0 %}
<!-- even -->
{% else %}
<!-- odd -->
{% endif %}
{% endfor %}
site.posts
分成两列,所以仅切换类对我来说不够。 - Adam Kisssite.posts
):{% cycle site.posts: 'odd', 'even' %}
,如果你在多个页面上重复使用这段代码的话,比如说。 - Felix Zumstein