theme-mdocs · 源蝶文档
由 源蝶Source开发 维护的 Halo 现代化文档主题,面向技术文档 / 知识库 / 产品手册场景,内置分类树导航与多级文档结构,并为 Docsme、MiniDocs 等文档类插件提供适配页面。
这个主题适合谁
| 你的场景 | 用起来的形态 |
|---|---|
| 产品手册 / 使用文档 | 一级分类当「文档组」,二级分类当章节,自动生成左侧目录树 + 右侧「本页目录」 |
| 技术知识库 | 配合 MiniDocs 插件,一个页面内翻完整个知识库,不用来回跳转 |
| 开源项目文档 | 配合 Docsme 插件,支持项目级目录与多版本文档切换 |
| 博客 + 文档混合站 | 普通文章走归档 / 标签 / 作者页,文档走文档组,两套体系互不干扰 |
一句话理解:分类树就是文档的骨架,主题负责把它渲染成左侧导航。
- 主题版本:
1.0.0 - Halo 要求:
>= 2.25.0 - 主题目录名:
theme-mdocs(需与theme.yaml中metadata.name保持一致)
预览

上图为真实界面截图,随主题包以
screenshot.jpg一起分发。
_notes/screenshots/目录下另有「文档详情」「文档中心」两张真实界面截图,提交应用市场时可直接上传作为商店截图。
快速上手(5 步)
① 装主题 ② 建分类 ③ 写文档 ④ 开启文档组 ⑤ 排首页
外观 → 主题 文章 → 分类 文章 → 新建 主题文档设置 首页设置
安装 + 启用 一级 + 二级 选分类 + 模板 添加一级分类 添加 / 排序模块
│ │ │ │ │
└────────────────┴────────────────┴────────────────┴────────────────┘
│
▼
访问前台查看效果
第 1 步:安装并启用主题
后台 → 外观 → 主题 → 找到「源蝶文档」→ 点 安装 → 点 启用。
第 2 步:建立分类树
后台 → 文章 → 分类 → 新建分类。建议至少建两层:
一级分类:使用指南 ← 将来作为「文档组」
二级分类:安装部署 ← 将来作为左侧导航里的分组
二级分类:常见问题
第 3 步:发布文档
后台 → 文章 → 新建:
- 填写标题与正文(正文用
h2/h3标题,右侧会自动生成目录); - 右侧 分类 勾选到第 2 步建好的分类树下;
- 右侧 模板 选择 文档;
- 点击 发布。
第 4 步:开启文档组
后台 → 外观 → 主题 → 主题设置 → 主题文档设置 → 在「文档组归档分类」中添加第 2 步的一级分类。
关键点:这里要选最顶级的那个分类。主题会自动读取它的下级分类来生成左侧目录树;文章只要挂在这棵树下的任意位置即可。
第 5 步:配置首页
后台 → 主题设置 → 首页设置 → 首页模块 → 点「添加模块」→ 先选「类型」,再填该类型对应的字段 → 用拖拽调整模块顺序。
完成后访问前台:
| 页面 | 地址 | 说明 |
|---|---|---|
| 首页 | / |
按首页模块顺序渲染 |
| 分类归档(文档组列表) | /categories |
展示第 4 步勾选的文档组 |
| 插件文档中心 | /docs |
Docsme 项目 / MiniDocs 知识库,需先装插件 |
配置指引
A. 内容怎么组织(最重要的一节)
后台「文章 → 分类」 前台表现
──────────────────────────────────────────────────────────────────────
[一级] 使用指南 ◀── 加进「文档组归档分类」 左侧导航一级(可折叠)
│
├─ [二级] 安装部署 左侧导航里的分组标题
│ ├─ 环境要求(文章) 文档页 + 右侧本页目录
│ └─ 安装步骤(文章) 文档页 + 右侧本页目录
│
└─ [二级] 常见问题
└─ 如何升级(文章) 文档页 + 右侧本页目录
三条规则:
- 一个一级分类 = 一个文档组(要在主题设置里勾选才会启用文档形态);
- 二级分类 = 左侧导航里的分组,可以继续往下嵌套更多层;
- 文章 = 具体页面,必须归属到这棵分类树下,否则不会出现在左侧目录树里。
B. 内容该选哪个模板
| 你在做什么 | 后台位置 | 分类 / 模板怎么选 |
|---|---|---|
| 写一篇文档 | 文章 → 新建 | 分类选到文档组树下 → 模板选 文档(post_documentation.html) |
| 写一篇普通文章 | 文章 → 新建 | 分类选普通分类 → 模板保持默认 |
| Docsme 文档中心 | 页面 → 新建 | 模板选 docsme-docs(docsme-docs.html) |
| MiniDocs 知识库中心 | 页面 → 新建 | 模板选 minidocs-docs(minidocs-docs.html) |
C. 首页怎么排
「首页设置 → 首页模块」数组顺序 = 页面上到下的顺序
① 主视觉 hero-carousel 标题 / 按钮 / 安装方式标签 / 轮播图
② 快速开始 quick-start 主推大卡 + 侧边卡片
③ 卡片模块 cards type1 背景图样式 / type3 图标样式
④ 文章分类 ocean-categories 按分类生成卡片
⑤ 菜单模块 ocean-menu 展示指定菜单的前 4 个一级菜单项
⑥ 推荐文章 ocean-posts 按标签或分类取前 6 篇
⑦ 插件模块 plugin-docsme-module 自动读取 Docsme 归档卡片
plugin-minidocs-module 自动读取 MiniDocs 归档卡片
操作方式:点「添加模块」→ 选「类型」→ 填字段 → 按住拖拽排序;不需要的模块直接删除。
默认值里预置了演示模块。正式建站时请把「快速开始」「卡片模块」里的示例文案与示例图片替换成自己的内容。
D. 插件页面怎么开(Docsme / MiniDocs)
① 安装插件 应用市场搜索 Docsme / MiniDocs → 安装 → 启用
│
▼
② 开启主题适配 主题设置 → 「Docsme 插件页面」/「MiniDocs 插件页面」→ 打开开关
│
▼
③ 新建页面 后台 → 页面 → 新建 → 模板选 docsme-docs / minidocs-docs → 发布
│
▼
④ 加入导航 后台 → 菜单 → 新建菜单项指向该页面
→ 主题设置 → 页眉导航 → 主菜单选择这个菜单
没有安装插件也没关系:相关入口会自动隐藏,主题其它功能照常使用。
E. 页眉 / 页脚怎么配
| 想改什么 | 去哪里改 |
|---|---|
| Logo(浅色 / 深色) | 全局设置 → 昼间 Logo / 夜间 Logo |
| 主题色、字号、圆角、背景 | 全局设置 |
| 页眉左侧导航按钮(最多 3 个) | 页眉导航 → 左侧导航按钮组 |
| 页眉右侧图标按钮(最多 6 个) | 页眉导航 → User 按钮组(可粘贴 SVG) |
| 主菜单下拉项 | 后台「菜单」建菜单 → 页眉导航 → 选择该菜单 |
| 版权、页脚菜单、ICP / 公安备案 | 页脚设置 |
所有跳转类选项默认留空,留空时对应按钮或卡片不会输出无效链接;备案号留空时备案栏整体不显示。
F. 内容页工具栏怎么调
主题设置 → 主题文档设置:
- 关闭「内容页顶部显示复制 Markdown 工具栏」可隐藏工具栏;
- 在「操作下拉菜单组」里新增分组,可添加 在 ChatGPT 中打开、在 Claude 中打开、自定义链接 三类菜单项。
常见问题
| 现象 | 原因与解决办法 |
|---|---|
| 文档页没有左侧目录树 | ① 文章没选分类;② 文章所属分类的一级分类没加进「文档组归档分类」。按「快速上手」第 2、4 步检查 |
| 左侧目录树缺文章 | 文章没挂到该文档组的分类树下;或文章未发布 |
| 右侧「本页目录」不出现 | 正文没有 h2 / h3 标题;或主题文档设置里关闭了「显示右侧目录(TOC)」 |
| 首页还是演示文案 | 主题设置 → 首页设置,逐个模块修改文案,不需要的模块直接删除 |
| 页眉没有搜索按钮 | 需先安装并启用搜索组件插件 PluginSearchWidget |
| 右上角没有图标按钮 | 默认是空的,需在「页眉导航 → User 按钮组」自行添加 |
访问 /docs 是空白或提示已关闭 |
未安装 Docsme / MiniDocs 插件,或主题设置里对应开关被关闭 |
| 页面模板里找不到 docsme-docs / minidocs-docs | 该模板只在「页面 → 新建」时可选;文章用「文档」模板 |
改了 theme.yaml 不生效 |
后台 → 外观 → 主题 → 点「重载主题配置」 |
| 改了模板 / 样式不生效 | 本项目是构建型主题,需重新 pnpm build 后在后台升级主题 |
| 备案号、版权不显示 | 留空即不显示;填写后自动出现 |
| 想换掉默认示例图片 | 主题设置里把对应图片字段换成自己的附件即可 |
功能特性
文档体系
- 文档组归档:主题设置中勾选一级分类作为文档组,归档页只展示这些分类,普通分类不会混入文档体系。
- 多级目录树:左侧导航按 Halo 分类树递归渲染,父子分类可折叠 / 展开,默认全展开或仅展开当前路径。
- 文档统计:文档组标题下显示「共 X 篇文章」。
- 右侧 TOC:自动解析正文
h2/h3生成目录,用IntersectionObserver高亮当前阅读位置。 - 上下篇导航:同一分类内自动前后翻页。
- 复制 Markdown:内容页顶部工具栏可一键复制原始 Markdown,并支持生成当前页面的 Markdown 链接。
Docsme 插件适配
- 文档中心聚合页(
docs.html)、项目目录页(doc-catalog.html)、文档详情页(doc.html)。 - 复用 Docsme 插件自身的导航树、内容头、版本切换与上下篇模块。
- 左侧导航可折叠展开,可配置默认全展开、是否显示文档数量。
- 支持多版本文档切换。
MiniDocs 插件适配
- 知识库中心页(
minidocs-docs.html)+ 页内嵌阅读视图(minidocs-reader.html)。 - 点击知识库卡片无需跳转即可进入阅读视图,支持无刷新切换文档、浏览器前进后退、URL 参数(
?kb=xx&docSlug=xx)直达。 - 阅读视图支持:知识库封面 / 文档数 / 更新时间、文档树折叠、TOC、点赞、浏览次数、分享链接、复制 Markdown。
- 自动处理无权限场景(401 / 403 时提示登录)。
内容页操作工具栏
固定项:复制 Markdown、复制 Markdown 链接、点赞(Docsme / MiniDocs 文档)、分享(复制当前链接)。
扩展项:「操作下拉菜单组」中可添加 在 ChatGPT 中打开、在 Claude 中打开、自定义(自定义 SVG 图标、标题与链接)。
主题与外观
- 明暗主题:默认跟随系统,支持手动切换并记忆(
localStorage: mdocs-theme)。 - 昼 / 夜 Logo:页眉与页脚可分别配置浅色、深色 Logo,切换主题时自动替换。
- 主题色:可设置全局主色;留空或为黑白灰时自动按明暗主题使用黑 / 白。
- 全局样式:字体大小、圆角、页面背景图或背景色。
- 背景图遮罩:快速开始卡片支持开启色彩遮罩并自定义遮罩颜色。
页眉与页脚
- 页眉:站点 Logo / 名称、左侧导航按钮组(最多 3 个)、主菜单下拉、搜索入口(需
PluginSearchWidget,⌘K)、自定义图标按钮组(最多 6 个)、明暗切换、用户菜单(登录 / 用户中心 / 控制台 / 退出)。 - 页脚:多列菜单(最多 4 个 Halo 菜单)、独立页脚 Logo、站点名称、版权信息、ICP 备案与公安联网备案。
首页模块(可拖拽排序)
| 模块 | 类型值 | 说明 |
|---|---|---|
| 主视觉 | hero-carousel |
标题 / 副标题 / 主次按钮 / 安装方式标签 / 轮播图(自动播放、拖拽切换、导航点) |
| 快速开始 | quick-start |
主推大卡 + 侧边卡片,支持背景图与色彩遮罩 |
| 卡片模块 | cards |
type1 背景图样式 / type3 图标简洁样式 |
| 文章分类 | ocean-categories |
按分类生成卡片,支持主色、封面与自定义底部代码 |
| 菜单模块 | ocean-menu |
展示指定菜单的前 4 个一级菜单项 |
| 推荐文章 | ocean-posts |
按标签或分类取前 6 篇 |
| Docsme 文档项目 | plugin-docsme-module |
可自动读取插件归档卡片或手动添加 |
| MiniDocs 知识库 | plugin-minidocs-module |
可自动读取插件归档卡片或手动添加 |
其他
- 响应式布局,移动端提供抽屉式目录与汉堡菜单。
- 使用语义化标签与
aria-*属性,兼顾无障碍与 SEO 基础。 - 全站 CSS 变量驱动的设计令牌,便于二次定制。
版本与兼容性
| 项目 | 值 | 说明 |
|---|---|---|
| 主题版本 | 1.0.0 |
与 theme.yaml 的 spec.version 一致 |
| Halo 兼容范围 | >= 2.25.0 |
与 theme.yaml 的 spec.requires 一致 |
| 许可证 | MIT |
详见 theme.yaml 的 spec.license 与根目录 LICENSE |
环境要求
| 依赖 | 版本 / 说明 |
|---|---|
| Halo | >= 2.25.0 |
| Node.js | ^20.19.0 或 >= 22.12.0(仅本地构建需要) |
| pnpm | 10.x(package.json 已声明 packageManager: pnpm@10.33.0) |
可选插件(未安装时对应入口自动隐藏,不影响主题其它功能):
| 插件 | 标识 | 作用 |
|---|---|---|
| Docsme | plugin-docsme |
文档中心 / 项目目录 / 文档详情适配 |
| MiniDocs | halo-plugin-minidocs |
知识库归档与内嵌阅读 |
| 搜索组件 | PluginSearchWidget |
页眉搜索入口与 ⌘K 快捷键 |
本地开发与打包
只想用主题的话,直接在后台安装即可,本节可跳过。
本地开发
# 安装依赖
pnpm install
# 监听构建(vite build --watch,输出到 templates/)
pnpm dev
构建主题包
# 仅构建静态产物
pnpm build-only
# 构建并打包为可安装的主题包(vite build && theme-package)
pnpm build
构建产物说明:
templates/:编译后的 Thymeleaf 模板与哈希资源(templates/assets/),请勿手动修改。dist/theme-mdocs-<version>.zip:可上传到 Halo 后台安装的主题包。
两种安装方式
- 方式一(推荐):将
theme-mdocs目录放入 Halo 工作目录的themes/下,在「外观 → 主题」中安装并启用。 - 方式二:执行
pnpm build生成主题包,在后台「外观 → 主题 → 安装」上传。
目录名必须为
theme-mdocs,与theme.yaml的metadata.name一致。
目录结构
theme-mdocs/
├── src/ # 源模板与资源(编辑入口)
│ ├── partials/
│ │ ├── layout.html # 主布局:页眉 / 页脚 / 插槽
│ │ ├── sidebar.html # 文档组侧边栏递归片段
│ │ ├── post-card.html # 文章列表项片段(标签页 / 作者页复用)
│ │ └── pagination.html # 分页片段
│ ├── header-menu.html # 页眉主菜单片段
│ ├── user-menu.html # 页眉用户菜单片段
│ ├── sidebar.html # 文档导航树递归片段
│ ├── minidocs-reader.html # MiniDocs 阅读视图片段
│ ├── index.html # 首页(模块化)
│ ├── post.html # 文章详情(文档组 / 普通文章)
│ ├── post_documentation.html # 自定义文章模板:文档型文章
│ ├── page.html # 独立页面
│ ├── category.html # 分类页(文档组概览 / 普通分类)
│ ├── categories.html # 分类归档(文档组归档)
│ ├── tag.html / tags.html # 标签详情 / 标签归档
│ ├── author.html # 作者归档
│ ├── archives.html # 归档
│ ├── docs.html # Docsme / MiniDocs 文档中心
│ ├── doc.html # Docsme 文档详情
│ ├── doc-catalog.html # Docsme 项目目录
│ ├── docsme-docs.html # 自定义页面模板:Docsme 文档中心
│ ├── minidocs-docs.html # 自定义页面模板:MiniDocs 知识库中心
│ ├── css/
│ │ ├── main.css # 主样式(含设计令牌与明暗变量)
│ │ ├── _append.css # 补充组件样式
│ │ └── ocean-tailwind.css # Tailwind 工具类
│ └── js/main.ts # 前端交互入口
├── public/assets/img/ # Logo、主题图标与示例封面
├── screenshot.jpg # 主题预览截图(随主题包分发)
├── settings.yaml # 主题设置表单定义
├── theme.yaml # 主题元信息与自定义模板声明
├── vite.config.ts # Vite 配置(@halo-dev/vite-plugin-halo-theme)
├── LICENSE # MIT 许可证全文
└── package.json
templates/为vite build的中间产物,由src/编译生成,已在.gitignore中忽略;提交源码时无需提交该目录。
主题设置一览
设置项按分组组织,位于后台「外观 → 主题 → 主题设置」:
| 分组 | 主要配置 |
|---|---|
| 全局设置 | 昼 / 夜 Logo、是否显示站点名称、主题色、字体大小、全局圆角、背景图与明暗背景色 |
| 页眉导航 | 左侧导航按钮组(最多 3 个)、自定义图标按钮组(最多 6 个) |
| 首页设置 | 首页模块列表(可拖拽排序) |
| 页脚设置 | 版权信息、独立页脚 Logo、显示网站名称、页脚菜单(最多 4 个)、ICP 与公安备案 |
| 主题文档设置 | 文档组归档分类、归档标题 / 描述、侧边栏折叠与默认展开、文档数量统计、复制 Markdown 工具栏、操作下拉菜单组、右侧 TOC |
| Docsme 插件页面 | 启用开关、归档标题 / 描述、导航默认展开与数量统计、TOC、工具栏与扩展菜单组 |
| MiniDocs 插件页面 | 启用开关、归档标题 / 描述、导航默认展开与数量统计、TOC、工具栏与扩展菜单组 |
所有涉及跳转的选项默认值为空,需要在后台按站点实际情况填写;留空时对应的按钮或卡片不会输出无效链接。
宽度体系
主题宽度由两个 CSS 变量控制:
--mdocs-width-content: 1080px:首页内容与页脚,对应.container/.homepage-container。--mdocs-width-page: 1400px:页眉与除首页 / 页脚外的其它页面(含文档布局.doc-layout),对应.mdocs-container-page。
调整站点整体宽度时只需修改 src/css/main.css 中的这两个变量。
注意事项
- 本项目为构建型主题:请修改
src/下的模板与资源后执行pnpm build,不要直接编辑templates/下的生成文件。 - 后台「外观 → 主题」中修改
theme.yaml后需点击「重载主题配置」才会生效。 - 主题不采集、不上传任何站点或访问者数据;仅在浏览器本地使用
localStorage记忆明暗主题偏好(键名mdocs-theme)。 - 主题使用的中文字体、图标与示例图片说明:
- 图标(
public/assets/img/*.svg)由本主题自行绘制,随主题以 MIT 许可分发。 - 示例封面(
templates/assets/img/demo-*.jpg)为本站真实界面截图,替换为自己的图片后请一并删除。 - 页面字体使用访问者系统自带字体栈,不下载、不内嵌第三方字体。
- 图标(
许可
本项目以 MIT 许可发布,许可证全文见根目录 LICENSE,主题元信息见 theme.yaml 的 spec.license。
MIT 许可的授权范围与限制:
- 允许:免费使用、修改、分发、商业使用与再许可,无需事先联系作者。
- 要求:分发本主题或其衍生作品时,必须保留原始版权声明与许可证全文。
- 限制:本主题按「原样」提供,不提供任何形式的担保,作者不对使用本主题产生的任何损失负责。
- 本主题未附加任何非商业使用限制;若需在其他许可条款下分发,请另行取得作者授权。
由 源蝶Source开发 维护。










