章节模板
向章节模板添加内容和前言
要有效地利用章节模板,您应该首先了解 Hugo 的 内容组织,特别是 _index.md
的用途,以便向章节和其他列表页面添加内容和前言。
章节模板查找顺序
请参阅 模板查找。
示例:创建默认章节模板
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
,因此上面的代码将返回以下结果
<h1>My Hugo Blog</h1>
但是,如果我们使用 events
章节尝试相同的代码,Hugo 将默认使用章节标题,因为没有 content/events/_index.md
可以从中提取内容和前言
<h1>{{ with .Site.GetPage "/events" }}{{ .Title }}{{ end }}</h1>
然后返回以下内容
<h1>Events</h1>