液体| Jekyll - 对于具有2个条件且有限制的循环?

时间:2016-01-10 16:02:13

标签: jekyll liquid

我想从属于两个(或多个)不同类别的帖子列表中获取第一个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 %}

3 个答案:

答案 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。祝你好运!