Jekyll中不同集合的一个变量用于forloop

时间:2016-08-13 10:51:22

标签: jekyll liquid

我的Jekyll网站上有几个收藏品。我已将帖子导航添加到其中一个在每个帖子页面上显示计数器的集合中:

{% assign testimonials = site.testimonials %}
{% assign page_order = 1 %}
{% for node in testimonials reversed %}
  {% if node.url == page.url %}
    {{ page_order }} from {{ forloop.length }}
  {% else %}
    {% assign page_order = page_order | plus: 1 %}
  {% endif %}
{% endfor %}

我想让这段代码不仅适用于site.testimonials,也适用于其他集合。我试图为这样的集合传递一个变量:

{% capture label %}{{ page.collection }}{% endcapture %}
{% assign collection = site.collections | where: "label",label | first %}
{% for node in collection reversed %}
  {% if node.url == page.url %}
    {{ page_order }} from {{ forloop.length }}
  {% else %}
    {% assign page_order = page_order | plus: 1 %}
  {% endif %}
{% endfor %}

但它不起作用。有没有办法为Jekyll中的所有集合传递一个变量,以便在后期导航中用于forloop?

1 个答案:

答案 0 :(得分:0)

当您使用site.testimonials访问集合时,您将获得集合的文档数组。

{{ site.testimonials | inspect }}

# output >> [#<Jekyll::Document ...>, #<Jekyll::Document ...>, ...]

在循环遍历site.collection时访问集合时,您会收到集合的对象:

{% assign collection = site.collections | where: "label",page.collection | first %}
{{ collection | inspect }}
# output >> { "output": true, "label": "collectionLabel", 
              "docs": [ doc1, docs2, ... ], "files": [], 
              "directory": "/path/to/collection", 
              "relative_directory": "_colectionDirectory" }

在您的情况下,您只需要替换:

{% for node in collection reversed %}

通过:

{% for node in collection.docs reversed %}