想要微调一下页面布局(比如改改页脚、加个版权卡片、给正文末尾塞个公众号二维码),点开主题目录却看到二三十个名字相近的 HTML 模板,顺着 include 链条一层层追踪像在侦探破案。
RustPress 的模板命名严格遵循单一职责原则。每一个模板文件对应一个明确的内容模型或页面类型。
本篇为你系统梳理 templates/ 目录下所有模板与组件的功能速查表,方便你改动时直接定位目标文件。
一、全站页面模板功能速查清单
1. 核心骨架与首页模板
base.html(全站骨架母版)- 核心职责:包含
<html>、<head>(SEO、CSS/JS 载入、统计代码)、顶部导航、主体插槽{% block content %}及全局页脚。 - 触发路径:全站所有页面继承母版。
- 核心职责:包含
home.html(复合定制型首页)- 核心职责:渲染顶部 Hero 大图、最新文章列表、短动态卡片与侧边栏。
- 触发路径:首页
/(config.toml中show_hero = true)。
index.html(标准博文列表页)- 核心职责:经典流式博文列表,包含文章卡片、发布时间、分类标签及倒分页翻页条。
- 触发路径:首页
/或历史分页/index2.html。
2. 博文与短动态模板
post.html(单篇博文详情页)- 核心职责:渲染博文 Markdown 正文、元信息、文末作者名片、前后篇导航及点赞评论系统。
- 触发路径:
source/YYYY/*.md(layout: 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-64 或 w-72),根据自己的标题长度调整为 w-80 即可。
下一篇,我们来看 Tera 模板引擎的语法细节与全局可用变量。