--- 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] #tags: [lists,sections] 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 The [lookup order][lookup] for section templates is as follows: 1. `/layouts/section/
.html` 2. `/layouts/
/list.html` 3. `/layouts/_default/section.html` 4. `/layouts/_default/list.html` 5. `/themes//layouts/section/
.html` 6. `/themes//layouts/
/list.html` 7. `/themes//layouts/_default/section.html` 8. `/themes//layouts/_default/list.html` ## `.Site.GetPage` with Sections Every `Page` in Hugo has a `.Kind` attribute. `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`. {{% note %}} `.GetPage` is not currently supported to grab single content files but *may* be supported in the future. {{% /note %}} You can call `.Site.GetPage` with two arguments: `kind` and `kind value`. These are the valid values for 'kind': 1. `home` 2. `section` 3. `taxonomy` 4. `taxonomyTerm` ## 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: ```

{{ 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: ```

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: ```

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

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

Events

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