如何基于页面元数据筛选Jekyll集合项并展示指定分类标题
解决方案:在Jekyll页面中展示指定集合项的标题
嘿,这事儿不难搞定,我给你一步步拆解:
首先,确保你的Jekyll配置里已经正确启用了product-categories集合,在_config.yml里加上这段:
collections: product-categories: output: false # 如果你不需要为每个分类生成单独页面,就保持false;需要的话改成true
接下来,你的page.html前置元数据格式是对的,比如这样:
--- layout: page title: 我的分类页面 product-categories: - filename1 - filename2 ---
然后在page.html的正文部分,用Liquid语法遍历指定的文件名数组,匹配对应的集合项并输出标题:
{% if page.product-categories %} <h2>选中的产品分类</h2> <ul> {% for category_filename in page.product-categories %} {% assign category = site.product-categories | where: "name", category_filename | first %} {% if category %} <li>{{ category.title }}</li> {% else %} <li>*找不到分类:{{ category_filename }}*</li> {% endif %} {% endfor %} </ul> {% endif %}
代码解释:
site.product-categories调用整个product-categories集合的所有文档where: "name", category_filename匹配集合文档的name属性(这个属性就是文件名去掉.md后缀的部分,正好对应你前置元数据里的文件名)| first取匹配到的第一个结果(因为每个文件名是唯一的,所以只会有一个匹配项)- 加了
{% if category %}的判断,防止某个文件名对应的集合文件不存在时页面出错,还会显示提示信息
这样就能完美展示你指定的那些分类项的标题啦!
内容的提问来源于stack exchange,提问作者Josh
相关产品推荐
相关产品推荐

