获取属于一个集合的所有类别

时间:2018-10-29 10:18:04

标签: jekyll

使用jekyll,我想获得完全属于我的一个收藏夹的所有类别。目前,我在_config.yaml中定义了两个集合:

collections:
  posts:
    output: true
    permalink: /blog/:title/
  press_releases:
    output: true
    permalink: /press/:title/

我了解到,使用site.categories可以访问我的帖子中当前提到的所有类别。问题是我只想获得与这两个集合之一相关的类别。仅表示新闻稿中的类别或帖子中的类别。是否有类似site.posts.categoriessite.press_releases.categories的东西?

此刻,似乎通过调用site.categories我只能从我的收藏集posts中获得这些类别。

我搜索了其他类似的案例,但到目前为止没有找到一个案例。 jekyll是否不支持根据集合分隔类别,或者我对如何使用集合和类别有错误的想法?

1 个答案:

答案 0 :(得分:0)

否,Jekyll不提供仅访问一个集合的类别的属性。但是,这可以通过一些简洁的代码来完成。

{% for my_doc in site.press_releases %}

{% for category in my_doc.categories %}
  {% capture my_categories %}
    {% if my_categories %}
      {{ my_categories | join: "," }},{{ category }}
    {% else %}
       {{ category }}
    {% endif %}
  {% endcapture %}
{% endfor %}

{% endfor %}

{% assign my_categories = my_categories | split: "," | uniq %}

{% for cat in my_categories %}
  {{cat }}
{% endfor %}

基本上,我们在这里所做的是,获取所需集合的所有文档,循环浏览所有文档,并获取存储在frontmatter(或默认值)中的类别,并将它们收集在一个数组中。请注意,液体中的数组操作有点笨拙,为什么我们需要来回转换数组为字符串。在上面的代码中,最后的for循环应为您提供集合“ press_releases”的所有类别。