--- 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. categories: [templates] keywords: [lists,sections,templates] menu: docs: parent: templates weight: 80 weight: 80 toc: true aliases: [/templates/sections/] --- ## 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. {{% include "content-management/_common/page-kinds.md" %}} ## `.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][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 >}} {{ define "main" }}
{{ .Content }} {{ partial "pagination.html" . }}
{{ end }} {{< /code >}} ### Example: using `.Site.GetPage` The `.Site.GetPage` example that follows assumes the following project directory structure: ```txt . └── 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: ```go-html-template

{{ with .Site.GetPage "section" "blog" }}{{ .Title }}{{ end }}

``` Since `blog` has a section index page with front matter at `content/blog/_index.md`, the above code will return the following result: ```html

My Hugo Blog

``` 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: ```go-html-template

{{ with .Site.GetPage "section" "events" }}{{ .Title }}{{ end }}

``` Which then returns the following: ```html

Events

``` [contentorg]: /content-management/organization/ [getpage]: /methods/page/getpage [lists]: /templates/lists/ [lookup]: /templates/lookup-order/ [`where`]: /functions/collections/where [sections]: /content-management/sections/