我想从属于两个(或多个)不同类别的帖子列表中获取第一个post.content。
以下方法有效,但不排除除第一个结果外的所有结果:
{% for post in site.categories.categorie_A and for post in site.categories.categorie_B %}
{{ post.content }}
{% endfor %}
对此设置限制将不会产生任何结果(虽然它应该有效):
{% for post in site.categories.categorie_A and for post in site.categories.categorie_B limit:1 %}
{{ post.content }}
{% endfor %}
这也不起作用:
{% for post in site.categories.categorie_A limit:1 and for post in site.categories.categorie_B limit:1 %}
{{ post.content }}
{% endfor %}
即使是if语句也不会起作用:
{% for post in site.categories.categorie_A and for post in site.categories.categorie_B %}
{% if forloop.first == true %}
{{ post.content }}
{% endif %}
{% endfor %}
以及嵌套for循环:
{% for post in site.categories.categorie_A %}
{% for categorie_A_post in post.categories.categorie_B %}
{{ categorie_A_post.content }}
{% endfor %}
{% endfor %}
答案 0 :(得分:1)
或类似的东西:
{% for p in site.posts %}
{% if p.categories contains "categorie_A" and p.categories contains "categorie_B" %}
<p>{{ p.title }}</p>
{% break %}{% comment %}Exit the loop{% endcomment %}
{% endif %}
{% endfor %}
答案 1 :(得分:0)
我发现这个有用,不是很漂亮,但它有效。
{% for post in site.posts %}
{% if post.categories contains "categorie_A" and post.categories contains "categorie_B" %}
{% capture times_if %}{% increment times_if %}{% endcapture %}
{% if times_if == '0' %}
{{ post.content }}
{% endif %}
{% endif %}
{% endfor %}
和一点点清洁(没有“和”)
{% for post in site.posts %}
{% if post.categories contains "categorie_A" %}
{% if post.categories contains "categorie_B" %}
{% capture times_if %}{% increment times_if %}{% endcapture %}
{% if times_if == '0' %}
{{ post.content }}
{% endif %}
{% endif %}
{% endif %}
{% endfor %}
答案 2 :(得分:0)
也可以使用forloop变量来编写它。 forloop变量也适用于你想要第二个或第三个结果:
{% for post in site.posts %}
{% if post.categories contains "categorie_A" and post.categories contains "categorie_B" %}
{% if forloop.first == true %}
{{ post.content }}
{% endif %}
{% endif %}
{% endfor %}
详细了解此变量here。祝你好运!