You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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会缓存旧的配置和文件,导致新添加的集合不被加载。试试这么做:

  1. 停止正在运行的jekyll serve进程
  2. 删除根目录下的_site文件夹和.jekyll-cache文件夹
  3. 重新启动服务: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:20:47