HUGO

  • 新闻
  • 文档
  • 主题
  • 社区
  • GitHub
gohugoio Star
  • 关于
    • 本节内容
    • 简介
    • 特性
    • 隐私
    • 安全
    • 许可证
  • 安装
    • 本节内容
    • macOS
    • Linux
    • Windows
    • BSD
  • 入门
    • 本节内容
    • 快速开始
    • 基本用法
    • 目录结构
    • 配置
    • 配置标记
    • 配置构建
    • 术语表
    • 外部学习资源
  • 快速参考
    • 本节内容
    • 表情符号
    • 函数
    • 方法
    • 页面集合
  • 内容管理
    • 本节内容
    • 组织
    • 页面捆绑包
    • 内容格式
    • 前言
    • 构建选项
    • 页面资源
    • 图像处理
    • 短代码
    • 相关内容
    • 章节
    • 内容类型
    • 原型
    • 分类法
    • 摘要
    • 链接和交叉引用
    • URL 管理
    • 菜单
    • 评论
    • 多语言
    • Markdown 属性
    • 语法高亮
    • 图表
    • 数学
    • 数据源
    • 内容适配器
  • 模板
    • 本节内容
    • 简介
    • 模板类型
    • 查找顺序
    • 基础模板
    • 主页模板
    • 单页模板
    • 章节模板
    • 分类模板
    • 术语模板
    • 局部模板
    • 内容视图模板
    • 短代码模板
    • 站点地图模板
    • RSS 模板
    • 404 模板
    • robots.txt 模板
    • 菜单
    • 分页
    • 嵌入式模板
    • 自定义输出格式
  • 函数
    • 本节内容
    • cast
    • collections
    • compare
    • crypto
    • css
    • data
    • debug
    • diagrams
    • encoding
    • fmt
    • global
    • go template
    • hash
    • hugo
    • images
    • inflect
    • js
    • lang
    • math
    • openapi3
    • os
    • partials
    • path
    • reflect
    • resources
    • safe
    • strings
    • templates
    • time
    • transform
    • urls
  • 方法
    • 本节内容
    • Duration
    • Menu
    • Menu entry
    • Page
    • Pager
    • Pages
    • Resource
    • Shortcode
    • Site
    • Taxonomy
    • Time
  • 渲染钩子
    • 本节内容
    • 简介
    • 引用
    • 代码块
    • 标题
    • 图像
    • 链接
    • 直通
    • 表格
  • 短代码
    • 本节内容
    • 评论
    • 详情
    • 图
    • Gist
    • 高亮
    • Instagram
    • Param
    • QR
    • Ref
    • Relref
    • Vimeo
    • X
    • YouTube
  • Hugo 模块
    • 本节内容
    • 配置 Hugo 模块
    • 使用 Hugo 模块
    • 主题组件
  • Hugo Pipes
    • 本节内容
    • 简介
    • 将 Sass 转译为 CSS
    • PostCSS
    • 后处理
    • JavaScript 构建
    • 资源压缩
    • 连接资源
    • 指纹识别和 SRI 哈希
    • 来自字符串的资源
    • 来自模板的资源
  • CLI
  • 故障排除
    • 本节内容
    • 审计
    • 日志记录
    • 检查
    • 弃用
    • 性能
    • 常见问题
  • 开发者工具
    • 本节内容
    • 编辑器插件
    • 前端
    • 搜索
    • 迁移
    • 其他项目
  • 托管和部署
    • 本节内容
    • Hugo 部署
    • 使用 Rclone 部署
    • 使用 Rsync 部署
    • 在 21YunBox 上托管
    • 在 AWS Amplify 上托管
    • 在 Azure Static Web Apps 上托管
    • 在 Cloudflare Pages 上托管
    • 在 Firebase 上托管
    • 在 GitHub Pages 上托管
    • 在 GitLab Pages 上托管
    • 在 KeyCDN 上托管
    • 在 Netlify 上托管
    • 在 Render 上托管
  • 贡献
    • 本节内容
    • 开发
    • 文档
    • 主题
  • 维护
模板

模板类型

创建不同类型的模板以渲染您的内容、资源和数据。

structural diagram of a website

结构

在项目根目录的 layouts 目录中创建模板。

尽管您的站点可能不需要每个这些模板,但下面的示例对于中等复杂程度的站点来说是典型的。

layouts/
├── _default/
│   ├── _markup/
│   │   ├── render-image.html   <-- render hook
│   │   └── render-link.html    <-- render hook
│   ├── baseof.html
│   ├── home.html
│   ├── section.html
│   ├── single.html
│   ├── taxonomy.html
│   └── term.html
├── articles/
│   └── card.html               <-- content view
├── partials/
│   ├── footer.html
│   └── header.html
└── shortcodes/
    ├── audio.html
    └── video.html

Hugo 的 模板查找顺序 确定了模板路径,允许您为任何页面创建独特的模板。

在创建模板时,您必须充分理解模板查找顺序。模板选择基于模板类型、页面种类、内容类型、节、语言和输出格式。

下面描述了每种模板类型的用途。

基础

基础模板通过将其他模板包装在一个外壳内来减少重复代码。

例如,下面的基础模板调用 partial 函数来包含每个页面的 head、header 和 footer 元素的局部模板,并使用 block 函数来包含每个页面的 main 元素中的 home、single、section、taxonomy 和 term 模板。

layouts/_default/baseof.html
<!DOCTYPE html>
<html lang="{{ or site.Language.LanguageCode }}" dir="{{ or site.Language.LanguageDirection `ltr` }}">
<head>
  {{ partial "head.html" . }}
</head>
<body>
  <header>
    {{ partial "header.html" . }}
  </header>
  <main>
    {{ block "main" . }}{{ end }}
  </main>
  <footer>
    {{ partial "footer.html" . }}
  </footer>
</body>
</html>

了解更多关于基础模板的信息。

主页

主页模板渲染您网站的主页。对于单页站点,这是唯一需要的模板。

例如,下面的主页模板从基础模板继承了站点的外壳,并使用页面列表渲染主页内容。

layouts/_default/home.html
{{ define "main" }}
  {{ .Content }}
  {{ range site.RegularPages }}
    <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
  {{ end }}
{{ end }}

页面集合快速参考指南 描述了过滤、排序和分组页面集合的方法和函数。

了解更多关于主页模板的信息。

单页

单页模板渲染单个页面。

例如,下面的单页模板从基础模板继承了站点的外壳,并渲染每个页面的标题和内容。

layouts/_default/single.html
{{ define "main" }}
  <h1>{{ .Title }}</h1>
  {{ .Content }}
{{ end }}

了解更多关于单页模板的信息。

章节

章节模板通常渲染一个章节中的页面列表。

例如,下面的章节模板从基础模板继承了站点的外壳,并渲染当前章节中的页面列表。

layouts/_default/section.html
{{ define "main" }}
  <h1>{{ .Title }}</h1>
  {{ .Content }}
  {{ range .Pages }}
    <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
  {{ end }}
{{ end }}

页面集合快速参考指南 描述了过滤、排序和分组页面集合的方法和函数。

了解更多关于章节模板的信息。

分类

分类模板渲染 分类中的术语列表。

例如,下面的分类模板从基础模板继承了站点的外壳,并渲染当前分类中的术语列表。

layouts/_default/taxonomy.html
{{ define "main" }}
  <h1>{{ .Title }}</h1>
  {{ .Content }}
  {{ range .Pages }}
    <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
  {{ end }}
{{ end }}

页面集合快速参考指南 描述了过滤、排序和分组页面集合的方法和函数。

了解更多关于分类模板的信息。

术语

术语模板渲染与术语关联的页面列表。

例如,下面的术语模板从基础模板继承了站点的外壳,并呈现与当前术语关联的页面列表。

layouts/_default/term.html
{{ define "main" }}
  <h1>{{ .Title }}</h1>
  {{ .Content }}
  {{ range .Pages }}
    <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
  {{ end }}
{{ end }}

页面集合快速参考指南 描述了过滤、排序和分组页面集合的方法和函数。

了解更多关于术语模板的信息。

局部模板

局部模板通常用于呈现站点的组件,但您也可以创建返回值的局部模板。

与其他模板类型不同,您不能创建局部模板来针对特定的页面类型、内容类型、部分、语言或输出格式。局部模板不遵循 Hugo 的 模板查找顺序。

例如,下面的局部模板呈现版权信息。

layouts/partials/footer.html
<p>Copyright {{ now.Year }}. All rights reserved.</p>

了解更多关于局部模板的信息。

内容视图

内容视图模板类似于局部模板,通过在 Page 对象上调用 Render 方法来调用。与局部模板不同,内容视图模板

  • 自动继承当前页面的上下文
  • 遵循查找顺序,允许您针对给定的内容类型或部分

例如,下面的首页模板从基础模板继承了站点的外壳,并为站点“articles”部分中的每个页面呈现一个卡片组件。

layouts/_default/home.html
{{ define "main" }}
  {{ .Content }}
  <ul>
    {{ range where site.RegularPages "Section" "articles" }}
      {{ .Render "card" }}
    {{ end }}
  </ul>
{{ end }}
layouts/articles/card.html
<div class="card">
  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
  {{ .Summary }}
</div>

了解更多关于内容视图模板的信息。

渲染钩子

渲染钩子模板会覆盖 Markdown 到 HTML 的转换。

例如,下面的渲染钩子模板会为外部链接添加 rel 属性。

layouts/_default/_markup/render-link.html
{{- $u := urls.Parse .Destination -}}
<a href="{{ .Destination | safeURL }}"
  {{- with .Title }} title="{{ . }}"{{ end -}}
  {{- if $u.IsAbs }} rel="external"{{ end -}}
>
  {{- with .Text | safeHTML }}{{ . }}{{ end -}}
</a>
{{- /* chomp trailing newline */ -}}

了解更多关于渲染钩子模板的信息。

短代码

短代码模板用于呈现站点的组件。与局部模板不同,短代码模板是从内容页面调用的。

例如,下面的短代码模板从全局资源呈现音频元素。

layouts/shortcodes/audio.html
{{ with resources.Get (.Get "src") }}
  <audio controls preload="auto" src="{{ .RelPermalink }}"></audio>
{{ end }}

从您的内容页面调用短代码

content/example.md
{{< audio src="audio/test.mp3" >}}

了解更多关于短代码模板的信息。

其他

使用其他专用模板来创建

  • 站点地图
  • RSS 源
  • 404 错误页面
  • robots.txt 文件

另请参阅

  • 术语表
  • 方法
  • 组织
  • 文件
  • 分页

本页内容

  • 结构
  • 基础
  • 首页
  • 单页
  • 部分
  • Taxonomy
  • 术语
  • 局部
  • 内容视图
  • 渲染钩子
  • Shortcode
  • 其他
最后更新时间:2025 年 1 月 16 日:将目录名、文件名和文件路径格式化为代码 (8051ff818)
改进此页面
由 Hugo 作者
Hugo Logo
  • 提交问题
  • 获取帮助
  • @GoHugoIO
  • @spf13
  • @bepsays

Netlify badge

 

Hugo 赞助商

贵公司?
 

Hugo 徽标的版权归 Steve Francia 所有,2013–2025 年。

Hugo Gopher 基于 Renée French 的原创作品。

  • 新闻
  • 文档
  • 主题
  • 社区
  • GitHub
  • 关于
  • 安装
  • 入门
  • 快速参考
  • 内容管理
  • 模板
  • 函数
  • 方法
  • 渲染钩子
  • 短代码
  • Hugo 模块
  • Hugo Pipes
  • CLI
  • 故障排除
  • 开发者工具
  • 托管和部署
  • 贡献
  • 维护