Disabling A Single Hugo Taxonomy List Page
Hugo provides a flexible Taxonomy system that is configured by default with “tag” and “category” taxonomies.
The Taxonomy of a piece of content can be configured in its front matter.
For example content/test.md
:
---
tags: [tag1]
categories: [cat1]
---
Observing the automatically generated sitemap.xml, we see Taxonomy list pages for /categories/
and /tags/
.
We can also see a URL generated for /catagories/cat1/
and /tags/tag1/
:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="...">
<url><loc>http://localhost:1313/test/</loc></url>
<url><loc>http://localhost:1313/categories/cat1/</loc></url>
<url><loc>http://localhost:1313/categories/</loc></url>
<url><loc>http://localhost:1313/</loc></url>
<url><loc>http://localhost:1313/tags/tag1/</loc></url>
<url><loc>http://localhost:8080/tags/</loc></url>
</urlset>
DisableKinds Configuration
Hugo provides a disableKinds
directive in the main configuration file, config.toml
. This directive allows
“taxonomy”, “taxonomyTerm” and others to be disabled globally. With disableKinds = ["taxonomy", "taxonomyTerm"]
added to config.toml
we can see from the generated sitemap what has happened:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="...">
<url><loc>http://localhost:8080/test/</loc></url>
<url><loc>http://localhost:8080/</loc></url>
</urlset>
URLs /categories/
, /categories/cat1/
, /tags/
, /tags/tag1/
are no longer generated.
To disable just the /categories/ and /tags/ URLs, we can amend the disableKinds configuration to:
disableKinds = ["taxonomyTerm"]
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="...">
<url><loc>http://localhost:8080/test/</loc></url>
<url><loc>http://localhost:8080/categories/cat1/</loc></url>
<url><loc>http://localhost:8080/</loc></url>
<url><loc>http://localhost:8080/tags/tag1/</loc></url>
</urlset>
Is it possible to disable a single Hugo Taxonomy list page without disabling all of them?
Hugo allows for the enrichment of members of its Taxonomy system via front-matter, as with other content.
To add additional meta-data to the tag Taxonomy we can create a file with path content/tags/_index.md
.
---
_build:
render: false
list: never
---
These options are documented in the Build Options section of the Hugo documentation.
With the disableKinds
configuration added previously removed we see that just the /tags/
URL is no longer generated:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="...">
<url><loc>http://localhost:8080/test/</loc></url>
<url><loc>http://localhost:8080/categories/cat1/</loc></url>
<url><loc>http://localhost:8080/categories/</loc></url>
<url><loc>http://localhost:8080/</loc></url>
<url><loc>http://localhost:8080/tags/tag1/</loc></url>
</urlset>