mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-14 20:37:55 -05:00
6aa5c9117f
cfd74b57d Add a config file update step. 5957d8815 Wrap cache configuration in code-toggle 914405c0e capitalization and indentation fix for taxonomies page (#1159) 223b80f42 Fix page kinds shortcode not rendering on Taxonomies page (#1158) a9b6fa984 Clarify weight description. 29e121681 Warn about zero weights in front matter. 27ce7ba8c Release 0.73.0 e9596b2ee Merge branch 'temp73' 074a270cd releaser: Add release notes to /docs for release of 0.73.0 4f56a9fc0 width fix of expanding code box in documentation (#1156) f27254d60 css fix of expanding code box in documentation (#1155) 43b576178 Fix incorrect directory name in quick-start (#1154) 16726eacf Add GroupByLastmod 73c31758e Fix for broken link again (#1151) d07067295 Fix broken link (#1144) bc0b484d1 Rename taxonomy kinds from taxonomy to term, taxonomyTerm to taxonomy 674d71842 Fix Typo on Docker section of installation page b87778165 Merge commit 'efa74c5c6e6ff1daddeb5834ea7c69bed2acf171' c7cdebed3 tpl/crypto: Add hmac 260130cc0 Allow hook template per section/type 1f70519d8 releaser: Add release notes to /docs for release of 0.72.0 8516d540c Merge commit '9e1dcefc5f559944b70d2fa520f6acd5c56a69f2' c49195c69 common/maps: Add Scratch.Values 78072df81 Add redirect support to the server 90ca0af6b Fix typo in install instructions git-subtree-dir: docs git-subtree-split: cfd74b57d968d98f88d3ddaee651d9cbe79b7ce1
116 lines
3.4 KiB
Markdown
116 lines
3.4 KiB
Markdown
---
|
|
title: Section Page Templates
|
|
linktitle: Section Templates
|
|
description: Templates used for section pages are **lists** and therefore have all the variables and methods available to list pages.
|
|
date: 2017-02-01
|
|
publishdate: 2017-02-01
|
|
lastmod: 2017-02-01
|
|
categories: [templates]
|
|
keywords: [lists,sections,templates]
|
|
menu:
|
|
docs:
|
|
parent: "templates"
|
|
weight: 40
|
|
weight: 40
|
|
sections_weight: 40
|
|
draft: false
|
|
aliases: [/templates/sections/]
|
|
toc: true
|
|
---
|
|
|
|
## Add Content and Front Matter to Section Templates
|
|
|
|
To effectively leverage section page templates, you should first understand Hugo's [content organization](/content-management/organization/) and, specifically, the purpose of `_index.md` for adding content and front matter to section and other list pages.
|
|
|
|
## Section Template Lookup Order
|
|
|
|
See [Template Lookup](/templates/lookup-order/).
|
|
|
|
## Page Kinds
|
|
|
|
Every `Page` in Hugo has a `.Kind` attribute.
|
|
|
|
{{% page-kinds %}}
|
|
|
|
## `.Site.GetPage` with Sections
|
|
|
|
`Kind` can easily be combined with the [`where` function][where] in your templates to create kind-specific lists of content. This method is ideal for creating lists, but there are times where you may want to fetch just the index page of a single section via the section's path.
|
|
|
|
The [`.GetPage` function][getpage] looks up an index page of a given `Kind` and `path`.
|
|
|
|
You can call `.Site.GetPage` with two arguments: `kind` (one of the valid values
|
|
of `Kind` from above) and `kind value`.
|
|
|
|
Examples:
|
|
|
|
- `{{ .Site.GetPage "section" "posts" }}`
|
|
- `{{ .Site.GetPage "page" "search" }}`
|
|
|
|
## Example: Creating a Default Section Template
|
|
|
|
{{< code file="layouts/_default/section.html" download="section.html" >}}
|
|
{{ define "main" }}
|
|
<main>
|
|
{{ .Content }}
|
|
<ul class="contents">
|
|
{{ range .Paginator.Pages }}
|
|
<li>{{.Title}}
|
|
<div>
|
|
{{ partial "summary.html" . }}
|
|
</div>
|
|
</li>
|
|
{{ end }}
|
|
</ul>
|
|
{{ partial "pagination.html" . }}
|
|
</main>
|
|
{{ end }}
|
|
{{< /code >}}
|
|
|
|
### Example: Using `.Site.GetPage`
|
|
|
|
The `.Site.GetPage` example that follows assumes the following project directory structure:
|
|
|
|
```
|
|
.
|
|
└── content
|
|
├── blog
|
|
│ ├── _index.md # "title: My Hugo Blog" in the front matter
|
|
│ ├── post-1.md
|
|
│ ├── post-2.md
|
|
│ └── post-3.md
|
|
└── events #Note there is no _index.md file in "events"
|
|
├── event-1.md
|
|
└── event-2.md
|
|
```
|
|
|
|
`.Site.GetPage` will return `nil` if no `_index.md` page is found. Therefore, if `content/blog/_index.md` does not exist, the template will output the section name:
|
|
|
|
```
|
|
<h1>{{ with .Site.GetPage "section" "blog" }}{{ .Title }}{{ end }}</h1>
|
|
```
|
|
|
|
Since `blog` has a section index page with front matter at `content/blog/_index.md`, the above code will return the following result:
|
|
|
|
```
|
|
<h1>My Hugo Blog</h1>
|
|
```
|
|
|
|
If we try the same code with the `events` section, however, Hugo will default to the section title because there is no `content/events/_index.md` from which to pull content and front matter:
|
|
|
|
```
|
|
<h1>{{ with .Site.GetPage "section" "events" }}{{ .Title }}{{ end }}</h1>
|
|
```
|
|
|
|
Which then returns the following:
|
|
|
|
```
|
|
<h1>Events</h1>
|
|
```
|
|
|
|
|
|
[contentorg]: /content-management/organization/
|
|
[getpage]: /functions/getpage/
|
|
[lists]: /templates/lists/
|
|
[lookup]: /templates/lookup-order/
|
|
[where]: /functions/where/
|
|
[sections]: /content-management/sections/
|