hugo/content/en/templates/section-templates.md
Bjørn Erik Pedersen 6aa5c9117f Squashed 'docs/' changes from ac2c4a487..cfd74b57d
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
2020-07-07 06:58:43 +02:00

3.4 KiB

title linktitle description date publishdate lastmod categories keywords menu weight sections_weight draft aliases toc
Section Page Templates Section Templates Templates used for section pages are **lists** and therefore have all the variables and methods available to list pages. 2017-02-01 2017-02-01 2017-02-01
templates
lists
sections
templates
docs
parent weight
templates 40
40 40 false
/templates/sections/
true

Add Content and Front Matter to Section Templates

To effectively leverage section page templates, you should first understand Hugo's content 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.

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 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 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" }}

{{ .Content }}
    {{ range .Paginator.Pages }}
  • {{.Title}}
    {{ partial "summary.html" . }}
  • {{ end }}
{{ partial "pagination.html" . }} {{ 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>