You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.7 KiB
Markdown
39 lines
1.7 KiB
Markdown
1 year ago
|
---
|
||
|
draft: false
|
||
|
title: "Filtering Hugo pages by Type"
|
||
|
aliases: ["Filtering Hugo pages by Type"]
|
||
|
series: ["blogging-with-quartz"]
|
||
|
date: "2023-04-08"
|
||
|
author: "Nick Dumas"
|
||
|
cover: ""
|
||
|
keywords: ["", ""]
|
||
|
description: "More complex Hugo sites sometimes require creating markdown files you don't want displayed in specific listings."
|
||
|
showFullContent: false
|
||
|
tags:
|
||
|
- hugo
|
||
|
- quartz
|
||
|
- webdev
|
||
|
---
|
||
|
|
||
|
## What am I Doing?
|
||
|
As part of my effort to beautify my [series](/notes/series-and-navigation/) features, I'm trying to set up a landing page where I can add arbitrary markdown content. You can see an example of one of these pages [here](/series/blogging-with-quartz).
|
||
|
|
||
|
Being able to embed some graphics and write short summaries of each series would be nice, so I've been experimenting with adding `_index.md` and `index.md` files at various places.
|
||
|
## Why doesn't it work?
|
||
|
The problem here is that the query in my `recent.html` partial was fetching pages were a little too vague and caught these
|
||
|
|
||
|
``` {title="recent.html"}
|
||
|
{{$notes := .Site.RegularPages.ByLastmod.Reverse}}
|
||
|
```
|
||
|
## What are the options?
|
||
|
Hugo has a bunch of different ways of grabbing groups of Pages. There's page bundles, taxonomies, and more.
|
||
|
## I picked X
|
||
|
Each page has a [Content Type](https://gohugo.io/content-management/types/) assigned to it. This ends up being the simplest option for filtering for now.
|
||
|
``` {title="recentNotes.html"}
|
||
|
{{$notes := where site.RegularPages "Type" "notes"}}
|
||
|
```
|
||
|
I think the actual smart thing I did was factor the "notes" query into a dedicated partial: `recentNotes.html`.
|
||
|
|
||
|
In a perfect world I'd parameterize this partial, but I'm not really sure that's even possible in Hugo. Partials explicitly accept up to one argument, no more.
|
||
|
|
||
|
Maybe this is what shortcodes are for.
|