使用jekyll,我想获得完全属于我的一个收藏夹的所有类别。目前,我在_config.yaml
中定义了两个集合:
collections:
posts:
output: true
permalink: /blog/:title/
press_releases:
output: true
permalink: /press/:title/
我了解到,使用site.categories
可以访问我的帖子中当前提到的所有类别。问题是我只想获得与这两个集合之一相关的类别。仅表示新闻稿中的类别或帖子中的类别。是否有类似site.posts.categories
或site.press_releases.categories
的东西?
此刻,似乎通过调用site.categories
我只能从我的收藏集posts
中获得这些类别。
我搜索了其他类似的案例,但到目前为止没有找到一个案例。 jekyll是否不支持根据集合分隔类别,或者我对如何使用集合和类别有错误的想法?
答案 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”的所有类别。