【问题标题】:loop through filtered collection in jekyll循环遍历 jekyll 中的过滤集合
【发布时间】:2014-08-03 10:21:12
【问题描述】:

我尝试在我的帖子中做这样的事情:

<ul class="articles-list">
  {% for post in site.posts | where:'group', post.group %}
    <div data-scroll-reveal="enter ease 0">
      {% include article-snippet.html %}
    </div>
  {% endfor %}
</ul>

但它会遍历我所有的收藏,而不是唯一循环带有特殊组的帖子。

【问题讨论】:

    标签: jekyll liquid github-pages


    【解决方案1】:

    您不能在循环中使用 where 过滤器。

    但你可以这样做:

    {% assign posts = site.posts | where:'group', post.group %}
    
    <ul class="articles-list">
      {% for post in posts %}
        <div data-scroll-reveal="enter ease 0">
          {% include article-snippet.html %}
        </div>
      {% endfor %}
    </ul>
    

    【讨论】:

    • 我将它用于版本化文档站点中的子类别目录。我将两个 where 链接在一起,首先是版本,然后是类别。这使我可以将所有文档放在一个集合中。
    • 有没有办法过滤group不是 post.group 的地方?
    • {% assign posts = site.posts | where_exp:"p", "p.group != post.group" %}
    【解决方案2】:

    根据liquid documentation 关于过滤器的规定,它们应该在输出标签{{}} 中使用。

    你可以试试 if 语句:

    {% for post in site.posts %}
        {% if post.group == 'group' %}
            <div data-scroll-reveal="enter ease 0">
                {% include article-snippet.html %}
            </div>
        {% endif %}
    {% endfor %}
    

    您还应该使用 where 过滤器a bit differently。像这样的:

    {{ site.members | where:"graduation_year","2014" }}
    

    这表示选择毕业年份为 2014 年的站点成员。您无需指定它应该过滤成员,第一部分隐含地说明了这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 2016-07-16
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      相关资源
      最近更新 更多