Section page templates
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.
Example: creating a default section template
{{ 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 }}Example: using .Site.GetPage 
The .Site.GetPage example that follows assumes the following project directory structure:
.
└── content
    ├── blog
    │   ├── _index.md   <-- title: My Hugo Blog
    │   ├── post-1.md
    │   ├── post-2.md
    │   └── post-3.md
    └── 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 "/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 "/events" }}{{ .Title }}{{ end }}</h1>
Which then returns the following:
<h1>Events</h1>