Das Theme liest eine ganze Reihe eigener Front-Matter-Parameter. Fast jeder hat
einen globalen Default in params.yaml und lässt sich pro Seite (oder pro
Sektion via cascade) überschreiben. Die Auflösung ist:
Front Matter → globaler Default → Theme-Fallback.
params:-BlockAlles, was das Theme auswertet, gehört in den params:-Block - so bleibt
sichtbar, was von Hugo und was vom Theme kommt. Alle Beispiele hier zeigen es
genau so.
Dieser Beitrag setzt showReadingTime: false und showWordCount: false im
params:-Block - deshalb sind beide im Hero ausgeblendet. Bei allen anderen
Beiträgen erscheinen sie.
Aufbau des Front Matter #
---
title: "Mein Beitrag" # von Hugo gelesen
date: 2026-02-16
draft: false
description: "…"
categories: ["Funktionen"] # Taxonomien
tags: ["hugo"]
params: # alles Theme-spezifische in diesen Block
showReadingTime: false
featureimage: titel.webp
discovery:
noindex: true
---
Anzeige-Schalter #
Boolesche Schalter (Default in Klammern). Ein expliziter Wert im params:-Block
gewinnt - auch ein false:
params:
showDate: true # (an) Veröffentlichungsdatum im Hero
showDateUpdated: true # (an) "Aktualisiert"-Datum aus lastmod im Hero
showReadingTime: true # (an) Lesezeit in der Meta-Zeile
showWordCount: true # (an) Wortzahl in der Meta-Zeile
showTaxonomies: true # (an) Tags & Kategorien im Hero
showTableOfContents: true # (an) schwebendes Inhaltsverzeichnis (links)
showHeadingAnchors: true # (an) Direktlink-Anker an jeder Überschrift
showAuthor: true # (an) Autoren-Box am Ende
showSharingLinks: true # (an) Teilen-Leiste
showComments: true # (an) Reaktionen/Kommentare am Ende
showPagination: true # (an) vor/zurück innerhalb der Sektion
showRelatedContent: false # (AUS) "Verwandte Beiträge" unter dem Beitrag
showDraftLabel: true # (an) "Entwurf"-Badge, solange draft: true
seriesOpened: true # (an) Serien-Box startet aufgeklappt
Werte-Parameter #
Parameter mit einem Wert statt eines Schalters:
params:
# Nur diese Netzwerke in der Teilen-Leiste zeigen (Schlüssel aus
# data/sharing.yaml); überschreibt den globalen Satz aus params.yaml.
sharingLinks: ["bluesky", "mastodon", "email"]
# Anzahl der "Verwandten Beiträge" (Default 3), wenn showRelatedContent an ist.
relatedContentLimit: 5
# Autorname NUR für die strukturierten Daten (Person/JSON-LD) dieser Seite;
# überschreibt den Standardautor aus params.yaml.
author: "Gastautorin"
Social-Tags fürs Cross-Posting (socialTags) #
socialTags ist keine flache Liste, sondern ein Block mit hashtags und
mentions (je Netzwerk). Er wird nicht auf der Seite gerendert, sondern in den
JSON Feed unter der Erweiterung _social geschrieben - von dort übernimmt
ihn ein Cross-Posting-Dienst und hängt beim automatischen Posten nach Mastodon
bzw. Bluesky die Hashtags und @-Erwähnungen an.
params:
socialTags:
hashtags:
- SelfHosted
- DNS
- PiHole
mentions:
mastodon: ["selfhosted@lemmy.world"]
bluesky: ["mariushosting.com"]
Titelbild (featureimage) #
Das Hero-/Titelbild löst das Theme in dieser Reihenfolge auf:
params.featureimage(lokaler Pfad oder absolute URL),- ein Bild namens
*background*/*feature*/*cover*/*thumbnail*im Bündel, - das
defaultBackgroundImageausparams.yaml.
params:
featureimage: titelbild.webp # Bild im Beitragsbündel …
# featureimage: https://…/og.png # … oder eine absolute URL
Der discovery-Block (Crawling, Index, Suche) #
Für SEO bringt das Theme einen eigenen discovery:-Block mit - Hugo hat dafür
keine Entsprechung. Alle Schalter haben einen sinnvollen Default, du setzt nur
die Abweichung:
params:
discovery:
noindex: true # default false → <meta name="robots" content="noindex">
nofollow: true # default false → ergänzt nofollow
sitemap: false # default true → Seite aus sitemap.xml entfernen
search: false # default true → Seite aus der Pagefind-Suche entfernen
llms: false # default true → Seite aus llms.txt entfernen
partials/seo-robots.html ist die einzige Quelle für die Robots-Direktive
(Front Matter → 404 → Default index, follow); es schreibt nur die Opt-out-
Tokens (noindex/nofollow), nie das implizite index, follow. Die Sitemap
ist daran gekoppelt: jede noindex-Seite fällt automatisch aus der Sitemap.
Die dünnen Schlagwort-Seiten setzen genau das per cascade in
content/tags/_index.md; die Rechtsseiten (siehe
Datenschutz) kombinieren noindex mit
search: false + llms: false und outputs: ["HTML"].
Kuratierte Schlagwort-Hubs (linkTitle + discovery) #
Eine Schlagwort-Seite ist standardmäßig dünn und noindex (die Cascade oben).
Um ein Schlagwort in einen indexierbaren Evergreen-Hub zu verwandeln - eine
kuratierte Landing-Page, die den Hauptbegriff besetzt, während die einzelnen
Beiträge ihre Long-Tails behalten - gib dem Schlagwort ein eigenes _index.md
unter content/tags/<tag>/:
# content/tags/seo/_index.md
---
title: "Suchmaschinen-Optimierung" # <h1> der Seite + SEO-Titel
linkTitle: "seo" # kurzes Label in den Tag-Chips
description: "…" # Hero-Lede + Meta-Description
discovery:
noindex: false # zurück in den Index, überschreibt die Thin-Tag-Cascade
sitemap: true
---
Einleitungsabsatz/-absätze, gerendert über der Liste der getaggten Beiträge.
Das eigene discovery der Seite überschreibt die kind: term-Cascade aus
content/tags/_index.md, sodass dieses eine Schlagwort index, follow wird und
wieder in der Sitemap steht; der Body erscheint als Intro über den Beiträgen.
Die Tag-Chips (die #tag-Pills im Beitrags-Hero und in der /tags/-Wolke)
rendern .LinkTitle, die Hub-Seite rendert .Title als ihr <h1>. So kann
ein beschreibender title: "Suchmaschinen-Optimierung" die Überschrift der
Seite bleiben, während linkTitle: "seo" jeden Chip als knappes #seo hält -
ohne linkTitle würde der volle Titel in jeden Chip lecken. (Chips werden per
CSS kleingeschrieben, linkTitle braucht also nur die Kurzform, nicht die
exakte Groß-/Kleinschreibung.)
Autorenprofil (authorProfile) #
Auf einer “Über mich”-Seite sorgt authorProfile: true für ProfilePage- und
Person-JSON-LD (mit sameAs-Links aus params.author.links) - siehe die
Seite Über mich.
params:
authorProfile: true
Kategorie-Icon (categoryIcon) #
Im _index.md einer Kategorie (content/categories/<name>/) bestimmt
categoryIcon das Tabler-Icon, das auf der Kategorie-Karte erscheint
(Default tag):
# content/categories/funktionen/_index.md
params:
categoryIcon: rocket
Hugo-eigene Schlüssel #
Diese liest Hugo selbst, nicht das Theme:
title,date,lastmod,draft- Titel und Daten.lastmodwird (bei aktivemshowDateUpdated) als “Aktualisiert”-Datum angezeigt.description,summary- Meta-Description bzw. Lede/Teaser.categories,tags,series- die drei Taxonomien des Themes.translationKey- verbindet die Sprachvarianten eines Beitrags.slug,url- URL-Steuerung.outputs- Ausgabeformate (z. B. nurHTML).aliases- clientseitige Weiterleitungs-Stubs (automatischnoindex), praktisch für alte oder Kurz-URLs:
aliases:
- /alte-url/
- /l/kurzlink
Die vollständige Liste dieser Schlüssel steht in der Hugo-Dokumentation zum Front Matter.


