Hiding Section From Listing in Hugo
Published on
Updated on
In Hugo you can list all the sections using the following code
{{ range .Site.Sections }}
<li><a href="{{ .Permalink }}">{{ .Title }}</a></li>
{{ end }}
However what if there’s a section that you want to hide for whatever reason? Let us say that you have a section labeled “unlisted” that you want to hide. The directory structure can look like this:
content/
posts/
unlisted/
bookmarks/
// ...
There are two types of hidden that I can think of:
- You don’t want any pages within unlisted to render at all.
- You want it to render, but not appear in the section listing
For the first case, Filosophy suggests to rename the section so that it starts with a dot. For example, .unlisted
.
For the second case, we need to introduce a page variable to help us choose when to display it. Let us call that page variable hidden
. To set it to true, you need to add it to the frontmatter of content/unlisted/_index.md
.
---
hidden: true
---
Then replace the listing code with the following:
{{ range .Site.Sections }}
{{ if not .Params.hidden }}
<li><a href="{{ .Permalink }}">{{ .Title }}</a></li>
{{ end }}
{{ end }}