hugo/docs/content/en/templates/term.md
2024-08-09 15:17:43 +02:00

2.9 KiB

title description categories keywords menu weight toc
Term templates Create a term template to render a list of pages associated with the current term.
templates
docs
parent weight
templates 100
100 true

The term template below inherits the site's shell from the base template, and renders a list of pages associated with the current term.

{{< code file=layouts/_default/term.html >}} {{ define "main" }}

{{ .Title }}

{{ .Content }} {{ range .Pages }}

{{ .LinkTitle }}

{{ end }} {{ end }} {{< /code >}}

Review the template lookup order to select a template path that provides the desired level of specificity.

In the example above, the term will be capitalized if its respective page is not backed by a file. You can disable this in your site configuration:

{{< code-toggle file=hugo >}} capitalizeListTitles = false {{< /code-toggle >}}

Data object

Use these methods on the Data object within a term template.

Singular
(string) Returns the singular name of the taxonomy.
{{ .Data.Singular }} → tag
Plural
(string) Returns the plural name of the taxonomy.
{{ .Data.Plural }} → tags
Term
(string) Returns the name of the term.
{{ .Data.Term }} → fiction

Display metadata

Display metadata about each term by creating a corresponding branch bundle in the content directory.

For example, create an "authors" taxonomy:

{{< code-toggle file=hugo >}} [taxonomies] author = 'authors' {{< /code-toggle >}}

Then create content with one branch bundle for each term:

content/
└── authors/
    ├── jsmith/
    │   ├── _index.md
    │   └── portrait.jpg
    └── rjones/
        ├── _index.md
        └── portrait.jpg

Then add front matter to each term page:

{{< code-toggle file=content/authors/jsmith/_index.md fm=true >}} title = "John Smith" affiliation = "University of Chicago" {{< /code-toggle >}}

Then create a term template specific to the "authors" taxonomy:

{{< code file=layouts/authors/term.html >}} {{ define "main" }}

{{ .Title }}

Affiliation: {{ .Params.affiliation }}

{{ with .Resources.Get "portrait.jpg" }} {{ with .Fill "100x100" }} portrait {{ end }} {{ end }} {{ .Content }} {{ range .Pages }}

{{ .LinkTitle }}

{{ end }} {{ end }} {{< /code >}}

In the example above we display the author with their affiliation and portrait, then a list of associated content.