Hello!
I’m learning Hugo to decide whether I want to use it in an upcoming project. I really appreciate how Hugo (and SSGs in general) separate the page format from the page content. However, as far as I understand from the tutorials, Hugo generates one page per content file. I don’t always want this; some I want content files that can show up in List pages, but don’t have Single pages associated with them. Is this possible?
As a concrete example, say I have a biography page with a dozen short (2 paragraph) bios. Each bio is conceptually distinct, and I want each bio to have its own distinct Front Matter. Then, I will have a List page that displays all the bios. However, I specifically do NOT want a separate Single page generated for each bio. Bios can only be displayed as a list, not individually. Is this type of content-list-without-individual-content-pages approach possible in Hugo?
Thanks!
Hi, there’s pretty much first-class support for this!
You can use leaf bundles. Have a content/biographies/index.md
with general content for the “list” page, and a markdown file for each person like content/biographies/jane-doe.md
. No pages are generated for markdown files except index.md
In the corresponding biography single page template you can do this:
<h1>{{ .Title }}</h1>
<p>{{ .Content }}</p>
{{ range .Resources.ByType "page" }}
<h1>{{ .Title }}</h1>
<p>{{ .Content }}</p>
{{ end }}
You can of course put the biography markdown files to a deeper subfolder and access them with .Resources.Match
instead.
If you don’t want to render the biography/index.md
either, you can add headless: true
to its front-matter and access the biography entries as specified here.
1 Like
So there are two ways to do this:
-
[Headless] Leaf Bundles as @madispe was mentioning
-
Data Files
Which will allow for access across the site since they live within the root directory of the site (kind of like /assets
). This way is also nice since it maps conceptually to the other difference between hard-edited content and reusable data.