模板系统速查与用途详解

更新于 2026-08-28

想要微调一下页面布局(比如改改页脚、加个版权卡片、给正文末尾塞个公众号二维码),点开主题目录却看到二三十个名字相近的 HTML 模板,顺着 include 链条一层层追踪像在侦探破案。

RustPress 的模板命名严格遵循单一职责原则。每一个模板文件对应一个明确的内容模型或页面类型。

本篇为你系统梳理 templates/ 目录下所有模板与组件的功能速查表,方便你改动时直接定位目标文件。


一、全站页面模板功能速查清单

1. 核心骨架与首页模板

  • base.html(全站骨架母版)
    • 核心职责:包含 <html><head>(SEO、CSS/JS 载入、统计代码)、顶部导航、主体插槽 {% block content %} 及全局页脚。
    • 触发路径:全站所有页面继承母版。
  • home.html(复合定制型首页)
    • 核心职责:渲染顶部 Hero 大图、最新文章列表、短动态卡片与侧边栏。
    • 触发路径:首页 /config.tomlshow_hero = true)。
  • index.html(标准博文列表页)
    • 核心职责:经典流式博文列表,包含文章卡片、发布时间、分类标签及倒分页翻页条。
    • 触发路径:首页 / 或历史分页 /index2.html

2. 博文与短动态模板

  • post.html(单篇博文详情页)
    • 核心职责:渲染博文 Markdown 正文、元信息、文末作者名片、前后篇导航及点赞评论系统。
    • 触发路径source/YYYY/*.mdlayout: blog/post)。
  • tweets.html(闲言碎语聚合页)
    • 核心职责:呈现微动态时间流、多图九宫格网格、互动按钮及本地发表框。
    • 触发路径:闲言主页 /t/

3. 专栏与长文档系统

  • columns.html(专栏总览与专栏主页)
    • 核心职责:渲染全站专栏卡片总览,以及单个专栏的封面图、作者寄语与文章目录网格。
    • 触发路径source/columns/source/columns/<id>/README.md
  • doc-item.html(专栏章节阅读页)
    • 核心职责:专业阅读版式,提供左侧响应式目录树(章节高亮)、面包屑导航及前后篇翻页。
    • 触发路径:专栏子文章(layout: doc-item)。
  • doc.html / docs.html(结构化长文档页)
    • 核心职责:树形层级技术文档展示。
    • 触发路径:独立结构化文档系统。

4. 归档、标签与分类体系

  • archives.html(全量时间轴归档页)
    • 核心职责:按年份倒序展示全站历史所有文章的时间轴清单。
    • 触发路径:历史归档 /a/
  • year_archive.html(年份/月份归档页)
    • 核心职责:按单一具体年份(如 2026 年)或月份聚合展示文章列表与统计计数。
    • 触发路径/2026//2025/
  • tags.html(标签云总览页)
    • 核心职责:汇总全站所有标签,以彩色胶囊标签云呈现,标明文章总数。
    • 触发路径:标签总览 /tag/
  • tag.html(单标签文章列表页)
    • 核心职责:展现带有指定标签(如 Rust)的所有文章列表。
    • 触发路径:单标签 /tag/<tag_name>/
  • categories.html(分类体系总览页)
    • 核心职责:展现全站多级分类层级树与文章统计。
    • 触发路径:分类总览 /cat/
  • category.html(单分类文章列表页)
    • 核心职责:展现指定分类(如 后端)下的所有文章列表。
    • 触发路径:单分类 /cat/<category_name>/

5. 项目、著作、友链与个人名片

  • projects.html(个人项目总览页)
    • 核心职责:开源作品展厅,展示项目 Logo、名称、版本号与简介。
    • 触发路径:项目主页 /p/
  • project.html(项目独立发布页)
    • 核心职责:软件官方主页,提供版本徽章、多平台安装/下载按钮组及特性介绍。
    • 触发路径source/projects/<name>/
  • works.html(出版著作总览页)
    • 核心职责:个人图书/著作书架网格展示。
    • 触发路径:著作主页 /w/
  • work.html(著作单品详情页)
    • 核心职责:单部图书详情,展现立体书封、出版社、年份、购买链接与大纲。
    • 触发路径source/works/*.md
  • friends.html(友情链接总览页)
    • 核心职责:呈现友链申请规范说明与友链卡片网格。
    • 触发路径:友链主页 /f/
  • friend.html(单个友链详情页)
    • 核心职责:单独展示某位友人的专属页面。
    • 触发路径:单友链详情。
  • about.html(作者个人简介页)
    • 核心职责:个人数字名片,展现履历、技术栈技能树、在线课程与联系方式。
    • 触发路径source/about.md

6. 系统功能与辅助页面

  • search.html(客户端全文搜索页)
    • 核心职责:基于 Lunr.js 驱动的离线搜索结果呈现与关键词高亮页。
    • 触发路径:全文检索 /search.html
  • 404.html(404 错误提示页)
    • 核心职责:友好的找不到页面提示,提供返回首页入口。
    • 触发路径:错误页面 /404.html

二、局部可复用组件(templates/components/

常见界面模块被拆分在 components/ 目录下,方便跨模板复用:

templates/components/
├── hero.html          # 首页大图问候横幅
├── sidebar.html       # 侧边栏(包含博主名片、最新文章、热门标签、分类)
├── author-bio.html    # 正文底部作者名片与赞赏码
├── toc.html           # 文章大纲(Table of Contents)悬浮导航
└── three-buttons.html # 底部快捷操作按钮组(点赞、分享、回到顶部)

在任何模板中,一行代码就能直接引用:

{% include "components/sidebar.html" %}

拆分局部小组件能最大化提高跨页面的代码复用率;但若连三五行的简单结构都强行拆分,会导致模板文件极度碎片化、增加排障成本。合理的做法是,在全站至少出现 2 次甚至 3 次以上,才将功能抽成 components/组件;特定页面独有的特殊排版保留在主模板内即可,不必拆分组件。


三、三则常见微调实操

1. 自定义修改全站页脚(Footer)

编辑 themes/<theme>/templates/base.html 底部的 <footer> 区域:

  • 自由添加网站运行天数统计、公安联网备案图标或个性化版权声明。

2. 为博文正文底部添加版权声明卡片

post.html 中找到 {{ page.content | safe }},在其后加入:

<div class="my-6 p-4 bg-gray-50 border-l-4 border-emerald-500 rounded text-sm text-gray-600">
    <p><strong>本文作者:</strong>{{ site.author.name }}</p>
    <p><strong>本文链接:</strong>{{ site.domain }}{{ page.url }}</p>
    <p><strong>版权声明:</strong>除特别声明外,本站文章均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" class="underline" target="_blank">CC BY-NC-SA 4.0</a> 协议,转载请注明出处。</p>
</div>

3. 调整专栏阅读页左侧目录树宽度

打开 doc-item.html,找到侧边栏容器的 Tailwind 类名(如 w-64w-72),根据自己的标题长度调整为 w-80 即可。

下一篇,我们来看 Tera 模板引擎的语法细节与全局可用变量。

金石碼农

金石碼农

大学计算机讲师,腾讯云最具价值专家(TVP),《小程序从0到1》《微信小游戏开发》作者,微信学堂讲师,极客时间荣誉讲师。公众号:艺述论。

北京, 中国

扫一扫,添加作者微信

微信二维码

评论

登录 GitHub 后即可发表评论
加载评论中...