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

如何使用Jekyll列出文件夹中的所有页面?

在Jekyll中自动生成文件夹内所有页面的头部链接列表

有两种简单的方法可以实现这个需求,核心都是用Jekyll的Liquid模板语法遍历并筛选页面:

方法1:按文件夹路径筛选页面

如果目标页面都集中在同一个文件夹下(比如docs/),可以通过URL路径直接筛选这类页面,生成链接列表:

<nav class="page-nav">
  <h4>所有文档页面</h4>
  <ul>
    {% assign target_pages = site.pages | where_exp: "item", "item.url contains '/docs/'" | sort: "title" %}
    {% for item in target_pages %}
      {% if item.title and item.url != page.url %}
        <li><a href="{{ item.url | relative_url }}">{{ item.title }}</a></li>
      {% endif %}
    {% endfor %}
  </ul>
</nav>

代码说明:

  • where_exp 是Liquid的高级筛选器,精准匹配URL包含目标文件夹路径的页面,比基础where更灵活
  • sort: "title" 按页面的title字段排序,也可换成sort: "url"按页面路径排序
  • item.title 判断用于过滤无标题的页面(比如默认404页面)
  • item.url != page.url 排除当前页面,避免生成指向自身的链接
  • relative_url 确保链接在本地预览和线上部署时都能正确跳转

方法2:用前置元数据标记页面

如果目标页面分散在不同文件夹,或者不想依赖路径筛选,可以给每个目标页面的前置元数据(Front Matter)添加自定义标记,比如group: docs:

---
title: "入门指南"
group: docs
---

接着用该标记筛选页面并生成链接:

<nav class="page-nav">
  <h4>所有文档页面</h4>
  <ul>
    {% assign target_pages = site.pages | where: "group", "docs" | sort: "order" %}
    {% for item in target_pages %}
      {% if item.title and item.url != page.url %}
        <li><a href="{{ item.url | relative_url }}">{{ item.title }}</a></li>
      {% endif %}
    {% endfor %}
  </ul>
</nav>

代码说明:

  • where: "group", "docs" 筛选所有设置了group: docs的页面
  • 可额外给页面添加order字段(比如order: 2),用sort: "order"自定义页面显示顺序
  • 这种方法更灵活,适合管理跨文件夹的页面集合

优化提示

  • 可以给导航栏添加CSS样式,比如设置横向排列、调整间距,让链接列表更美观
  • 若需排除特定页面,可在筛选时增加条件,比如where_exp: "item", "item.url != '/docs/ignore-this-page/'"

内容的提问来源于stack exchange,提问作者Chiara Ani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:58:29