hugo/content/en/methods/site/MainSections.md
Bjørn Erik Pedersen 9b0050e9aa Squashed 'docs/' content from commit 5c085a37b
git-subtree-dir: docs
git-subtree-split: 5c085a37b297bf12f59efeaae591418ec025c10d
2024-01-27 10:48:33 +01:00

1.4 KiB

title description categories keywords action
MainSections Returns a slice of the main section names as defined in the site configuration, falling back to the top level section with the most pages.
related returnType signatures
[]string
SITE.MainSections

Site configuration:

{{< code-toggle file=hugo >}} [params] mainSections = ['books','films'] {{< /code-toggle >}}

Template:

{{ .Site.MainSections }} → [books films]

If params.mainSections is not defined in the site configuration, this method returns a slice with one element---the top level section with the most pages.

With this content structure, the "films" section has the most pages:

content/
├── books/
│   ├── book-1.md
│   └── book-2.md
├── films/
│   ├── film-1.md
│   ├── film-2.md
│   └── film-3.md
└── _index.md

Template:

{{ .Site.MainSections }} → [films]

When creating a theme, instead of hardcoding section names when listing the most relevant pages on the front page, instruct site authors to set params.mainSections in their site configuration.

Then your home page template can do something like this:

{{ range where .Site.RegularPages "Section" "in" .Site.MainSections }}
  <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ end }}