Jekyll 3无法读取自定义目录中的_navtiles集合,求技术协助
解决Jekyll自定义集合无法读取的问题
嘿,我来帮你排查下为什么site.navtiles读不到内容——毕竟刚用Jekyll的时候,集合配置很容易踩坑。先从几个最可能的点逐一检查:
1. 确认_config.yml的集合配置是否正确
首先看你的_config.yml,确保集合的配置项没写错。因为你把集合移到了customcollections目录,所以必须先指定collections_dir,然后正确配置navtiles集合:
collections_dir: customcollections collections: posts: output: true navtiles: output: true # 哪怕不需要生成单独页面,也建议开启,确保Jekyll能识别这个集合 permalink: /navtiles/:name/ # 可选,根据需求设置
这里要注意两个关键点:
customcollections目录下必须有_navtiles文件夹(下划线+集合名),不能把_navtiles放在根目录。- 集合名称
navtiles要和目录名_navtiles严格对应,大小写也要一致(Jekyll在部分系统上是区分大小写的)。
2. 检查_navtiles目录下的文件格式
Jekyll的集合文件必须包含有效的YAML前置元数据块,也就是开头用---包裹的部分,哪怕是空的也不能少。比如你的某个navtile文件应该是这样的:
--- title: "首页导航块" link: "/" --- 这里是导航块的描述内容...
如果文件没有这个前置元数据,Jekyll会把它当成普通静态文件,不会加入到site.navtiles集合里。
3. 清理缓存并重启Jekyll服务
有时候Jekyll会缓存旧的配置和文件,导致新添加的集合不被加载。试试这么做:
- 停止正在运行的
jekyll serve进程 - 删除根目录下的
_site文件夹和.jekyll-cache文件夹 - 重新启动服务:
jekyll serve
4. 调试验证集合是否被加载
可以在模板里加一段调试代码,看看Jekyll到底加载了哪些集合:
{% raw %} <div style="border:1px solid #ccc; padding:10px; margin:20px 0;"> <h4>已加载的集合:</h4> <ul> {% for collection in site.collections %} <li>{{ collection.label }} - 共 {{ collection.docs | size }} 个项目</li> {% endfor %} </ul> </div> {% endraw %}
如果navtiles出现在列表里但数量是0,说明_navtiles目录下的文件格式有问题;如果列表里根本没有navtiles,那就是_config.yml的配置或者目录结构错了。
先按这几步排查,应该能快速定位问题~
内容的提问来源于stack exchange,提问作者Tofuwarrior
相关产品推荐
相关产品推荐

