本文档介绍 jijian 主题的模板结构、继承关系和自定义方法,帮助你深入理解主题的工作原理并进行定制开发。
模板结构概览
jijian 主题采用 Hugo 标准的模板层次结构:
themes/jijian/layouts/
├── _default/ # 默认模板
│ ├── baseof.html # 基础模板
│ ├── blank.html # 空白页面模板
│ ├── single.html # 单篇文章页面
│ ├── list.html # 列表页面
│ ├── terms.html # 标签/分类归档页
│ ├── archives.html # 时间线归档页
│ ├── search.html # 搜索页面
│ └── rss.xml # RSS 订阅源
├── page/ # 特定页面模板
│ └── password.html # 密码保护页面
├── partials/ # 部分模板
│ ├── head.html # HTML 头部
│ ├── header.html # 页面顶部导航
│ ├── footer.html # 页面底部
│ ├── card.html # 名片模式首页
│ ├── portal.html # 门户模式首页
│ ├── cover.html # 文章封面图
│ ├── toc.html # 目录
│ ├── post_meta.html # 文章元信息
│ ├── post_nav_links.html # 上下篇导航
│ ├── breadcrumbs.html # 面包屑导航
│ ├── social_icons.html # 社交图标
│ ├── share_icons.html # 分享按钮
│ ├── comments.html # 评论系统
│ ├── edit_post.html # 编辑文章链接
│ ├── translation_list.html # 多语言列表
│ ├── author.html # 作者信息
│ ├── anchored_headings.html # 带锚点的标题
│ ├── custom_wordcount.html # 自定义字数统计
│ ├── svg.html # SVG 图标库
│ ├── extend_head.html # 头部扩展区域
│ ├── extend_footer.html # 底部扩展区域
│ └── templates/ # SEO 模板
│ ├── opengraph.html # Open Graph 元数据
│ ├── x_cards.html # Twitter/X Cards 元数据
│ └── schema_json.html # Schema.org 结构化数据
├── shortcodes/ # 短代码
│ ├── bilibili.html # 哔哩哔哩视频
│ ├── figure.html # 增强版图片
│ ├── collapse.html # 可折叠内容
│ ├── vertical.html # 竖排文本
│ ├── inTextImg.html # 行内图片
│ └── rawhtml.html # 原始 HTML
├── 404.html # 404 错误页面
└── robots.txt # 搜索引擎爬虫配置
模板继承关系
基础模板层次
baseof.html (基础模板)
├── head.html (头部)
│ ├── Meta 信息
│ ├── CSS 样式
│ ├── Favicon
│ ├── 主题脚本
│ └── templates/
│ ├── opengraph.html
│ ├── x_cards.html
│ └── schema_json.html
├── header.html (导航)
│ ├── Logo
│ ├── 主题切换
│ ├── 语言切换
│ └── 导航菜单
├── main block (主内容区)
│ ├── single.html (文章页)
│ │ ├── breadcrumbs.html
│ │ ├── toc.html
│ │ ├── post_meta.html
│ │ ├── translation_list.html
│ │ ├── edit_post.html
│ │ ├── share_icons.html
│ │ └── comments.html
│ ├── list.html (列表页)
│ │ ├── portal.html (门户模式)
│ │ └── card.html (名片模式)
│ ├── archives.html (归档页)
│ ├── search.html (搜索页)
│ └── terms.html (标签/分类页)
└── footer.html (页脚)
├── 版权信息
├── 返回顶部
├── 主题切换
└── extend_footer.html
核心模板详解
baseof.html - 基础模板
所有页面的基础骨架,定义了整体 HTML 结构:
|
|
关键点:
- 使用
block "main"定义主内容区块 - 子模板通过
define "main"填充内容
single.html - 文章页模板
单篇文章的展示模板:
文章页结构
├── 面包屑导航 (breadcrumbs.html)
├── 文章标题
├── 文章元信息 (post_meta.html)
│ ├── 发布日期
│ ├── 阅读时长
│ ├── 字数统计
│ └── 作者信息
├── 多语言翻译列表 (translation_list.html)
├── 目录 (toc.html)
├── 文章正文
├── 编辑链接 (edit_post.html)
├── 分享按钮 (share_icons.html)
├── 上下篇导航 (post_nav_links.html)
└── 评论区 (comments.html)
list.html - 列表页模板
文章列表的展示模板,支持三种首页模式:
列表页结构
├── 首页模式判断
│ ├── cardMode → card.html
│ ├── portalMode → portal.html
│ └── 默认 → 文章列表
├── 分页导航
└── 文章条目
├── 封面图(可选)
├── 标题
├── 日期
└── 摘要
head.html - 头部模板
包含所有 <head> 内的内容:
head.html 结构
├── Meta 标签
│ ├── charset
│ ├── viewport
│ ├── description
│ └── keywords
├── 标题
├── Favicon
├── CSS 样式
│ ├── 主样式
│ ├── 代码高亮
│ └── 扩展样式
├── 主题切换脚本
├── SEO 模板
│ ├── opengraph.html
│ ├── x_cards.html
│ └── schema_json.html
└── extend_head.html (扩展区域)
自定义模板
方法一:覆盖主题模板
在站点根目录的 layouts 文件夹中创建同名模板文件,会自动覆盖主题模板:
your-site/
├── layouts/
│ ├── _default/
│ │ └── single.html # 覆盖主题的 single.html
│ └── partials/
│ └── footer.html # 覆盖主题的 footer.html
└── themes/
└── jijian/
└── layouts/
├── _default/
│ └── single.html
└── partials/
└── footer.html
方法二:使用扩展模板
主题提供了 extend_head.html 和 extend_footer.html 扩展点:
添加自定义 CSS/JS:
创建 layouts/partials/extend_head.html:
|
|
创建 layouts/partials/extend_footer.html:
|
|
方法三:创建新的部分模板
创建自定义部分模板并在主模板中引用:
- 创建
layouts/partials/my-component.html:
|
|
- 在其他模板中引用:
|
|
页面类型模板
归档页 (archives.html)
时间线归档页面,按年份和月份展示所有文章:
|
|
访问路径:/archives/
配置方法:
|
|
搜索页 (search.html)
Pagefind 搜索页面:
|
|
访问路径:/search/
构建搜索索引:
|
|
标签/分类页 (terms.html)
标签和分类的列表页:
|
|
访问路径:
- 标签:
/tags/ - 分类:
/categories/
404 页面
错误页面模板:
|
|
模板变量
全局变量
在模板中可使用的 Hugo 变量:
| 变量 | 说明 |
|---|---|
.Site |
站点对象 |
.Page |
当前页面对象 |
.Title |
页面标题 |
.Content |
页面内容 |
.Summary |
页面摘要 |
.Date |
发布日期 |
.Lastmod |
最后修改日期 |
.Permalink |
页面永久链接 |
.RelPermalink |
页面相对链接 |
.Params |
页面参数 |
.Site.Params |
站点参数 |
常用方法
|
|
部分模板详解
toc.html - 目录模板
生成文章目录,支持多种显示模式:
配置参数:
|
|
social_icons.html - 社交图标模板
显示社交图标,支持悬浮二维码:
配置示例:
|
|
comments.html - 评论模板
集成 Giscus 评论系统:
配置示例:
|
|
自定义示例
添加文章底部广告
创建 layouts/partials/extend_footer.html:
|
|
添加阅读进度条
创建 layouts/partials/extend_head.html:
|
|
创建 layouts/partials/extend_footer.html:
|
|
自定义文章归档样式
创建 layouts/_default/archives.html:
|
|