Taxonomies

[TOC]

Hugo bietet Unterstützung für benutzerdefinierte Taxonomien, die logische Beziehungen zwischen Inhalten der Website darstellen.

Weitere Links mit Beispiel



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 würden für jeden Film Begriffe für jede dieser Taxonomien angeben (z.B. in der front matter jeder Ihrer 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
    ...

front

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 wäre dasselbe wie die manuelle Konfiguration Ihrer Taxonomien wie unten:

[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 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 ist 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 Sie auch die Standardtaxonomien verwenden, wenn Sie sie behalten wollen.

[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.

Metal typesetting

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 “Schauspieler” 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 verwenden.