为Jekyll文章添加Tags导致页面异常的问题排查
针对你遇到的两个问题,我来逐一分析并给出解决方案:
1. 添加Tags Front Matter后页面失效的问题
首先,你的tags: ["code", "test", "example", "python"]写法本身是合法的YAML数组,但Jekyll 4.0.0对YAML解析的细节可能有要求,加上页面失效的常见原因通常和格式解析或构建报错有关,你可以尝试以下步骤排查:
- 检查Front Matter的完整性:确保你的Front Matter开头和结尾都是三个连续的短横线
---,没有遗漏或多余的符号,比如:--- title: example date: 2019-09-16 00:00:00+2000 layout: post categories: blog tags: ["code", "test", "example", "python"] --- - 换用YAML数组的换行写法:有时候Jekyll对换行式的数组解析更稳定,你可以改成:
tags: - code - test - example - python - 查看详细构建日志:运行
jekyll serve --trace命令,终端会输出完整的错误信息,比如YAML解析错误、模板渲染冲突等,这能帮你精准定位问题所在(比如是否有gem依赖冲突,或者某个标签的写法触发了错误)。
2. 遍历site.categories时获取到整个文章的问题
这是因为site.categories在Jekyll中的结构是哈希表(键值对):每个键是分类名称,对应的值是该分类下所有文章的数组。当你直接用{% for category in site.categories %}循环时,每次的category是一个包含两个元素的数组([分类名, 文章列表]),所以直接输出{{category}}会把整个数组内容打印出来,看起来就像“整个文章”。
正确的遍历方式需要解构这个键值对,提取分类名称:
{% for category_name, posts in site.categories %} <input type="checkbox" name="{{ category_name }}" value="{{ category_name | capitalize }}"> {% endfor %}
或者先赋值再使用:
{% for category in site.categories %} {% assign category_name = category[0] %} <input type="checkbox" name="{{ category_name }}" value="{{ category_name | capitalize }}"> {% endfor %}
这样就能正确获取到单独的分类名称,而不是连带文章列表一起输出了。
内容的提问来源于stack exchange,提问作者S1LV3R
相关产品推荐
相关产品推荐

