章节模板
向章节模板添加内容和前置 matter
为了有效地利用章节模板,您应该首先了解 Hugo 的内容组织,特别是 _index.md
用于向章节和其他列表页面添加内容和前置 matter 的目的。
章节模板查找顺序
参见模板查找。
示例:创建默认章节模板
layouts/_default/section.html
{{ define "main" }}
<main>
{{ .Content }}
{{ $pages := where site.RegularPages "Type" "posts" }}
{{ $paginator := .Paginate $pages }}
{{ range $paginator.Pages }}
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ end }}
{{ template "_internal/pagination.html" . }}
</main>
{{ end }}
示例:使用 .Site.GetPage
以下 .Site.GetPage
示例假设以下项目目录结构
.
└── content
├── blog
│ ├── _index.md <-- title: My Hugo Blog
│ ├── post-1.md
│ ├── post-2.md
│ └── post-3.md
└── events
├── event-1.md
└── event-2.md
如果未找到 _index.md
页面,则 .Site.GetPage
将返回 nil
。因此,如果 content/blog/_index.md
不存在,则模板将输出章节名称
<h1>{{ with .Site.GetPage "/blog" }}{{ .Title }}{{ end }}</h1>
由于 blog
在 content/blog/_index.md
中具有包含前置 matter 的章节索引页面,因此以上代码将返回以下结果
<h1>My Hugo Blog</h1>
但是,如果我们对 events
章节使用相同的代码,Hugo 将默认为章节标题,因为不存在可以从中提取内容和前置 matter 的 content/events/_index.md
<h1>{{ with .Site.GetPage "/events" }}{{ .Title }}{{ end }}</h1>
然后返回以下内容
<h1>Events</h1>