Skip to content

目录页模板 ​

目录页是 Teek 的 catalogue 页面:它扫描 docs/posts/ 下的一个目录,自动列出其中的文章和子目录。目录页不是文章,也不是靠手写链接维护的普通页面。

用途 ​

  • 为一个一级分类提供自动文章入口,例如「技术笔记」。
  • 为一个二级分组提供自动文章入口,例如「技术笔记 / 项目记录」。
  • 让新增文章自动出现在目录页,而不必每次手动修改列表。
  • 让目录结构与 docs/posts/ 的真实文件结构保持一致。

放在哪里 ​

目录页统一放在 docs/catalog/,并与 docs/posts/ 中的文章目录保持同名层级。

层级目录页源文件pathpermalink公开地址
一级分类docs/catalog/技术笔记.mdposts/技术笔记/catalog/技术笔记https://www.baecon.cn/catalog/技术笔记
二级目录docs/catalog/技术笔记/项目记录.mdposts/技术笔记/项目记录/catalog/技术笔记/项目记录https://www.baecon.cn/catalog/技术笔记/项目记录

对应的文章目录分别是 docs/posts/技术笔记/ 和 docs/posts/技术笔记/项目记录/。文章目录里只放文章,不要创建 index.md。

什么时候使用 ​

  • 新建了一个一级分类,需要一个自动文章目录。
  • 在一个一级分类下新建了二级分组,需要单独的目录入口。
  • 想按真实文件结构展示一个目录下的文章、子目录和标题。
  • 文章会持续增加,手动维护链接容易漏项。

什么时候不要使用 ​

  • 要写一篇真正的文章、教程、复盘、随笔或题解。请使用对应的文章模板。
  • 要写一段需要自由排版的目录说明或自定义卡片。目录页只保留 frontmatter,页面主体由插件生成,不适合写长正文。
  • 要访问全站的分类、标签或归档页。这些页面由现有功能页提供,不要重复创建。
  • 不要为了占位而在 docs/posts/ 下创建 index.md;文章目录不创建索引文件。

新增一级分类时,目录页只是其中一步。根据仓库当前流程,还要同步检查 docs/.vitepress/ConfigHyde/Nav.ts、docs/.vitepress/sidebar.ts 和 docs/.vitepress/search-manifest.ts 中的分类顺序或导航入口。

完整文件模板 ​

下面代码块中的整个文件只有 frontmatter,没有正文。复制后按下一节修改字段。

markdown
---
title: 技术笔记
description: 收录技术学习、工程实践、项目开发、部署运维和问题复盘等文章,持续记录可复用的方法、工具、流程与实践经验,方便读者按主题查阅。
layout: page
catalogue: true
path: posts/技术笔记
pageTitle: 文档目录
permalink: /catalog/技术笔记
sidebar: false
article: false
pagefind-indexed: false
comment: false
coverImg: /home/bg11.webp
---

完整目录页 frontmatter 字段表 ​

字段类型省略时默认推荐值级别完整说明
titlestring无可靠默认与目录名称一致,例如 技术笔记必填目录页标题,用于导航、浏览器标题和页面展示。应与目标文章目录的名称和用途一致。
descriptionstringSEO 会回退到站点描述50–150 个中文字符,概括该目录收录什么推荐目录页的 SEO 描述和摘要。应说明目录范围,例如技术学习、项目实践和复盘记录。
descstring未设置省略可选(旧字段)主要给 Teek 目录组件做显示回退;不是 SEO 主字段,首页卡片也不读取它。新目录页建议只用 description;如保留 desc,需与 description 同值。
layoutstringVitePress 默认文档布局固定为 page必填(固定)目录页必须使用 Teek 的页面布局,才能渲染自动目录。不要删除,也不要改成文章默认布局。
catalogueboolean不启用目录扫描固定为 true必填(固定)告诉 Teek 这是一张目录页,需要读取 path 指向的文章目录并生成目录列表。
pathstring无,未设置则不扫描posts/<目录路径>,例如 posts/技术笔记必填要扫描的文章目录。推荐统一写成相对 docs/ 的 posts/...;插件用 path.join 解析,但不建议依赖前导 /。不能写 docs/ 段,也不能指向 docs/catalog/。
pageTitlestring主题默认目录标题文档目录,或更具体的 项目记录可选目录列表中显示的标题文案。它和页面 title 不是同一个值:title 是页面名称,pageTitle 是列表区域标题。
permalinkstring会按文件路径生成路由,但本项目不依赖默认值全站唯一且以 /catalog/ 开头,例如 /catalog/技术笔记必填目录页的公开 URL。必须与 path 的目录层级对应,不能使用 /posts/ 开头,不能包含 .md,也不能与其他目录页重复。
sidebarbooleanVitePress 默认为 true固定为 false必填(固定)目录页不是文章,不应显示文章左侧侧边栏。若出现侧边栏,通常是错用了文章模板。
articleboolean/posts/ 外通常不算文章固定为 false必填(固定)防止目录页进入首页文章卡片、归档、分类和标签等文章区域。
pagefind-indexedbooleantrue固定为 false必填(固定)阻止 Pagefind 把目录页收进站内搜索。目录内容会随文章变化,搜索文章正文即可,不应重复索引目录页。
commentboolean未写 false 时按开启处理固定为 false必填(固定)目录页不提供评论区,避免读者在自动生成的目录页下讨论而脱离具体文章。
coverImgstring不保证有自定义封面使用仓库已有图片,如 /home/bg11.webp;也可换成本地封面可选目录页封面元数据。推荐复用已有图片;如果要使用自定义路径,必须确认文件真实存在。

复制后必须修改或确认 ​

字段操作示例说明
title必须改项目记录改成目录的真实名称。
description必须改项目开发、架构设计和复盘记录。写清这个目录收录什么,建议 50–150 个中文字符。
layout固定page目录页必须使用页面布局。
catalogue固定true目录页必须开启自动目录。
path必须改posts/技术笔记/项目记录指向真实存在的 docs/posts/ 目录,不加前导斜杠。
pageTitle建议确认文档目录可改成更具体的列表标题,例如 项目记录。
permalink必须改/catalog/技术笔记/项目记录与目录路径一一对应且全站唯一。
sidebar固定false目录页不显示文章侧边栏。
article固定false目录页不进入文章区域。
pagefind-indexed固定false目录页不进入站内搜索。
comment固定false目录页不显示评论。
coverImg建议确认/home/bg11.webp可选,但填了就必须确认文件存在。

目录页不要写 categories、tags、date、top、sticky。它不是文章,不需要文章分类、标签、发布时间、精选或置顶。

新目录页建议只保留 description,不要再添加旧字段 desc。如果仓库已有目录页同时保留 desc,保持其原样即可,但不要把两者写成不同内容。

text
目录页文件:docs/catalog/<目录路径>.md
扫描目录:docs/posts/<目录路径>/
path:posts/<目录路径>
permalink:/catalog/<目录路径>
公开地址:https://www.baecon.cn/catalog/<目录路径>

一级分类示例:

text
文件:docs/catalog/技术笔记.md
path:posts/技术笔记
permalink:/catalog/技术笔记

二级目录示例:

text
文件:docs/catalog/技术笔记/项目记录.md
path:posts/技术笔记/项目记录
permalink:/catalog/技术笔记/项目记录

必须遵守以下细节:

  • path 推荐统一写成相对 docs/ 的 posts/...;不要写 docs/posts/... 或绝对磁盘路径。前导 / 在当前插件通常仍可解析,但团队约定不使用。
  • path 指向 docs/posts/ 下真实存在的目录,不是 docs/catalog/。
  • permalink 以 /catalog/ 开头,不带 .md,建议不加末尾斜杠。
  • permalink 必须全站唯一,目录页与目录页、文章之间都不能重复。
  • title、path 的末级目录名、permalink 的末级路径最好保持一致,便于排查。
  • 目标目录暂无文章时可以保留 .gitkeep,但仍不要创建 index.md。

目录页的页面结构 ​

目录页没有正文内容,也没有推荐章节。复制模板时,只要保留 frontmatter 和成对的 ---,不要在闭合的 --- 后面添加 H1、H2、列表或说明文字。

页面上的文章列表、子目录和标题都由 catalogue: true 与 path 自动生成。title 和 pageTitle 是 frontmatter 字段;不要为了在页面中间增加说明而改写成普通文章。目录页也不遵循通用的「背景、目标、总结」章节建议,因为它本来就没有正文。

重启开发服务器 ​

Teek 的目录数据在 Vite 启动阶段扫描。新增、删除或修改 catalogue: true 页面,修改 path,或者调整被扫描的文章目录结构后,如果目录页没有立即更新,请停止开发服务器并重新运行:

bash
pnpm docs:dev

当前开发端口为 5174。不要只刷新浏览器就认为配置一定已经重新扫描。发布前还应运行构建:

bash
pnpm docs:build

发布前检查 ​

  • 文件位于 docs/catalog/,没有放到 docs/posts/。
  • 文章目录真实存在,且没有 index.md。
  • layout: page。
  • catalogue: true。
  • path 以 posts/ 开头并指向正确目录,没有 docs/ 段或反斜杠。
  • permalink 以 /catalog/ 开头、全站唯一、与路径对应。
  • sidebar: false、article: false、pagefind-indexed: false、comment: false 均保留。
  • 没有写 categories、tags、date、top、sticky。
  • coverImg 指向真实存在的图片。
  • 闭合的 --- 后没有任何正文。
  • 重启开发服务器后,目录能列出目标文章和子目录。
  • 目录页没有左侧栏、评论和搜索结果。
  • 新增一级分类时已同步检查导航、侧边栏和搜索分类顺序。

最后更新于: