hugo/docs/content/en/methods/site/Taxonomies.md
2023-12-04 15:24:01 +01:00

2.2 KiB

title description categories keywords action
Taxonomies Returns a data structure containing the site's taxonomy objects, the terms within each taxonomy object, and the pages to which the terms are assigned.
related returnType signatures
page.TaxonomyList
SITE.Taxonomies

Conceptually, the Taxonomies method on a Site object returns a data structure such as:

{{< code-toggle >}} taxonomy a:

  • term 1:
    • page 1
    • page 2
  • term 2:
    • page 1 taxonomy b:
  • term 1:
    • page 2
  • term 2:
    • page 1
    • page 2 {{< /code-toggle >}}

For example, on a book review site you might create two taxonomies; one for genres and another for authors.

With this site configuration:

{{< code-toggle file=hugo >}} taxonomies genre = 'genres' author = 'authors' {{< /code-toggle >}}

And this content structure:

content/
├── books/
│   ├── and-then-there-were-none.md --> genres: suspense
│   ├── death-on-the-nile.md        --> genres: suspense
│   └── jamaica-inn.md              --> genres: suspense, romance
│   └── pride-and-prejudice.md      --> genres: romance
└── _index.md

Conceptually, the taxonomies data structure looks like:

{{< code-toggle >}} genres:

  • suspense:
    • And Then There Were None
    • Death on the Nile
    • Jamaica Inn
  • romance:
    • Jamaica Inn
    • Pride and Prejudice authors:
  • achristie:
    • And Then There Were None
    • Death on the Nile
  • ddmaurier:
    • Jamaica Inn
  • jausten:
    • Pride and Prejudice {{< /code-toggle >}}

To list the "suspense" books:

<ul>
  {{ range .Site.Taxonomies.genres.suspense }}
    <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
  {{ end }}
</ul>

Hugo renders this to:

<ul>
  <li><a href="/books/and-then-there-were-none/">And Then There Were None</a></li>
  <li><a href="/books/death-on-the-nile/">Death on the Nile</a></li>
  <li><a href="/books/jamaica-inn/">Jamaica Inn</a></li>
</ul>

{{% note %}} Hugo's taxonomy system is powerful, allowing you to classify content and create relationships between pages.

Please see the taxonomies section for a complete explanation and examples.

{{% /note %}}