Taxonomies
[TOC]
Übersetzt von gohugo.io
Hugo bietet Unterstützung für benutzerdefinierte Taxonomien, die logische Beziehungen zwischen Inhalten der Website darstellen.
Weitere Links mit Beispiel
- https://www.jakewiesler.com/blog/hugo-taxonomies/
- https://github.com/gohugoio/hugo/issues/3776
- https://hugo-taxonomies.netlify.com/ - BEISPIEL
- und wie es konfiguriert wird siehe hier von Manage HUGO Taxonomies like a boss
Was ist eine Taxonomy?
Hugo bietet Unterstützung für benutzerdefinierte Gruppierungen von Inhalten, die als Taxonomien bezeichnet werden. Taxonomien sind Klassifizierungen von logischen Beziehungen zwischen Inhalten.
Definitionen
- Taxonomy: eine Kategorisierung, die zur Klassifizierung von Inhalten verwendet werden kann.
- Term (Laufzeit): ein Schlüssel innerhalb der Taxonomie
- Value (Wert): ein Inhalt, der einem Begriff zugeordnet ist.
Beispiel einer Taxonomie: Film-Website
Für die Website über Filme sollen folgende Taxonomien eingebunden werden:
- Schauspieler
- Regisseure
- Studios
- Genre
- Jahr
- Auszeichnungen
Dann sollen für jeden Film Begriffe für jede dieser Taxonomien angeben (z.B. in der front matter jede der Filminhaltsdateien). Aus diesen Begriffen erstellt Hugo automatisch Seiten für jeden Schauspieler, Regisseur, Studio, Genre, Jahr und Auszeichnungen, wobei in jeder Liste alle Filme aufgeführt sind, die zu diesem bestimmten Schauspieler, Regisseur, Studio, Genre, Jahr und Preis passen.
Film-Taxonomie-Organisation
Um mit dem Beispiel einer Filmseite fortzufahren, werden im Folgenden inhaltliche Zusammenhänge aus der Perspektive der Taxonomie dargestellt:
Actor <- Taxonomy
Bruce Willis <- Term
The Sixth Sense <- Value
Unbreakable <- Value
Moonrise Kingdom <- Value
Samuel L. Jackson <- Term
Unbreakable <- Value
The Avengers <- Value
xXx <- Value
Aus inhaltlicher Sicht würden die Beziehungen unterschiedlich aussehen, obwohl die verwendeten Daten und Bezeichnungen gleich sind:
Unbreakable <- Value
Actors <- Taxonomy
Bruce Willis <- Term
Samuel L. Jackson <- Term
Director <- Taxonomy
M. Night Shyamalan <- Term
...
Moonrise Kingdom <- Value
Actors <- Taxonomy
Bruce Willis <- Term
Bill Murray <- Term
Director <- Taxonomy
Wes Anderson <- Term
...
Photo by Benedikt Geyer on Unsplash
Hugo Taxonomy Defaults
Hugo unterstützt nativ Taxonomien.
Ohne eine einzige Zeile zu Ihrer Datei config.toml hinzuzufügen, erstellt Hugo automatisch Taxonomien für tags
und categories
. Das ist gleich bedeutend wie die manuelle Konfiguration in der config.toml
:
[taxonomies]
category = "categories"
tag = "tags"
Wenn Hugo irgendwelche Taxonomien nicht erstellen soll, muss folgende Einstellung bei disableKinds
in der config.toml vorgenommen werden:
disableKinds = ["taxonomy", "taxonomyTerm"]
Default Destinations (Standard Ziele)
Wenn Taxonomien verwendet und Taxonomievorlagen bereitgestellt werden, erstellt Hugo automatisch sowohl eine Seite mit allen Begriffen der Taxonomie als auch einzelne Seiten mit Inhaltslisten, die mit jedem Begriff verknüpft sind.
Beispielsweise erstellt eine in der Konfiguration (config.toml) deklarierte und in Ihrer Content Front Matter verwendete Taxonomie der /categories
die folgenden Seiten:
- Eine einzige Seite unter
example.com/categories
, die alle Begriffe innerhalb der Taxonomie auflistet - Individuelle Taxonomielistenseiten (z.B.
/categories/development/
) für jeden der Begriffe, der eine Auflistung aller Seiten anzeigt, die wiederum als Teil dieser Taxonomie innerhalb der Front Matter einer Inhaltsdatei markiert sind. 😀
Configure Taxonomies
Benutzerdefinierte Taxonomien, die nicht von den defaults abweichen, müssen in der site config definiert werden, bevor sie auf der gesamten Website verwendet werden können. Es müssen sowohl die Plural- als auch die Singular-Label für jede Taxonomie angegeben werden. Beispielsweise singular key = "plural value"
für TOML und singular key: "plural value"
für YAML.
Beispiel: Hinzufügen einer benutzerdefinierten Taxonomie namens series
Beim Hinzufügen von benutzerdefinierten Taxonomien müssen auch die Standardtaxonomien benannt sein, wenn sie weiterhin genutzt werden sollen.
[taxonomies]
category = "categories"
series = "series"
tag = "tags"
Beispiel: Entfernen von Standard-Taxonomien
Wenn nur die standardmäßige tags
-Taxonomie vorhanden ist und die categories
-Taxonomie für die Website entfernt werden soll, kann der Wert taxonomies
in der config.toml geändert werden.
[taxonomies]
tag = "tags"
Sollen alle Taxonomien vollständig deaktiviert werden, kann die Optien disableKinds
verwendet werden (Siehe auch Hugo Taxonomy Defaults).
Zu der Taxonomie-Liste und zu den Seiten mit Taxonomie-Begriffen können Inhalt und Titel hinzugefügt werden. Weitere Informationen sind unter Content Organization zu finden - speziell auch wie zu diesem Zweck eine _index.md
angelegt wird.
Ähnlich wie normale Seiten sind auch die Taxonomielisten wie Permalinks konfigurierbar, aber die Permalinks der Taxonomieseiten sind es nicht.
Die Konfigurationsoption preserveTaxonomyNames
wurde in Hugo 0.55 entfernt.
.Page.Title
kann auf dem entsprechenden Taxonomieknoten verwendet werden, um den ursprünglichen Wert zu erhalten.
Taxonomies zum Inhalt hinzufügen
Sobald eine Taxonomie auf Seitenebene definiert ist, kann ihr jeder beliebige Inhalt zugewiesen werden, unabhängig vom Inhaltstyp oder Inhaltsbereich.
Die Zuordnung von Inhalten zu einer Taxonomie erfolgt in der front matter. Erstellen wird einfach eine Variable mit dem plural Namen der Taxonomie und alle Begriffe, die anwendet werden, der Instanz des Inhaltstyps zugewiesen.
Um Inhaltsdateien mit vorkonfigurierten Taxonomien oder Begriffen schnell zu generieren, ist die Dokumentation zu Hugo archetypes hilfreich. ⏰
Beispiel: Front Matter mit Taxonomies
categories = ["Development"]
project_url = "https://github.com/gohugoio/hugo"
series = ["Go Web Dev"]
slug = "hugo"
tags = ["Development", "Go", "fast", "Blogging"]
title = "Hugo: A fast and flexible static site generator"
Order Taxonimies
Eine Inhaltsdatei kann für jede ihrer zugehörigen Taxonomien Gewichtungen zuweisen. Die taxonomische Gewichtung kann zum Sortieren oder Ordnen von Inhalten in den Vorlagen der Taxonomieliste verwendet werden und wird in der Frontmatter einer Inhaltsdatei deklariert. Die Konvention für die Deklaration von taxonomischem Gewicht ist taxonomyname_weight
.
Die folgenden TOML- und YAML-Beispiele zeigen einen Inhalt mit einem Gewicht von 22, der für Ordnungszwecke bei der Darstellung der Seiten verwendet werden kann, die den Werten “a”, “b” und “c” der Taxonomie “tags
” zugeordnet sind. Es wurde auch das Gewicht von 44 zugewiesen, wenn es die Kategorieseite “d” wiedergibt.
Bespiel: Taxonomic weight
categories = ["d"]
categories_weight = 44
tags = ["a", "b", "c"]
tags_weight = 22
title = "foo"
Durch die Verwendung der taxonomischen Gewichtung kann derselbe Inhalt an verschiedenen Positionen in verschiedenen Taxonomien erscheinen.
Derzeit unterstützen Taxonomien nur die standardmäßige Reihenfolge der Listeninhalte Gewicht => Datum. Weitere Informationen finden Sie in der Dokumentation zu Taxonomievorlagen.
Photo by Hannes Wolf on Unsplash
Benutzerdefinierte Metadaten zu einem Taxonomiebegriff hinzufügen
Wenn den Taxonomiebegriffen benutzerdefinierte Metadaten hinzufügt werden sollen, muss eine Seite für diesen Begriff unter /content/<TAXONOMY>/<TERM>/_index.md
erstellt werden und die Metadaten in der ersten Ausgabe hinzugefügt werden. Um mit unserem Beispiel “actors” fortzufahren, nehmen wir an, dass jedem Schauspieler ein Link zur Wikipedia-Seite hinzufügt werden soll. Die term pages
wären dann etwa: /content/actors/bruce-willis/_index.md
---
title: "Bruce Willis"
wikipedia: "https://en.wikipedia.org/wiki/Bruce_Willis"
---
Die benutzerdefinierten Metadaten können später - wie in der Dokumentation zu Taxonomy Terms Templates documentation beschrieben - verwendet werden.