Das Theme bringt eine Handvoll Shortcodes mit - hier sind sie, alphabetisch sortiert. Diagramme (Mermaid) und Mathe (KaTeX) tauchen hier kompakt auf und werden im Beitrag Diagramme und Mathe ausführlich gezeigt.
Akkordeon #
Aufklappbare Abschnitte auf Basis von nativem <details> - ganz ohne
JavaScript. Standardmäßig ist nur ein Eintrag gleichzeitig geöffnet; mit
single="false" dürfen mehrere offen sein. Mit open="true" startet ein
Eintrag aufgeklappt.
{{< accordion >}}
{{< accordion-item label="Was ist ein Shortcode?" icon="puzzle" >}}
Ein wiederverwendbarer Baustein als **Markdown**.
{{< /accordion-item >}}
{{< accordion-item label="Brauche ich JavaScript?" open="true" >}}
Nein - es nutzt natives `<details>`/`<summary>`.
{{< /accordion-item >}}
{{< /accordion >}}
Was ist ein Shortcode?
Brauche ich dafür JavaScript?
<details>/<summary> und funktioniert
auch ohne aktiviertes JavaScript.Kann mehr als ein Eintrag offen sein?
single="false", um es zu erlauben.Amazon #
Rendert ein Affiliate-Produkt als Karte. Du übergibst nur den Affiliate-Reflink;
Titel, Beschreibung, Bild und Preis kommen aus einem Build-Cache
(data/products.yaml), den script/fetch-amazon-products.js aus der Amazon
Creators API befüllt - der Site-Build selbst spricht Amazon nie an.
Das Produktbild lädt erst nach Zustimmung über den Consent-Manager Klaro von
Amazons CDN, und der Link trägt rel="sponsored" (was automatisch den
Werbehinweis einblendet). Der Preis wird nur angezeigt, solange die Cache-Daten
frisch sind (< 24 h) - gemäß Amazons Vorgaben.
{{< amazon "https://amzlink.to/az0sqPpjSZX54" >}}
Midea Portasplit Cool Mobile Klimaanlage nur Kühlung
Funktioniert auch im Card-Grid - mehrere amazon-Shortcodes zwischen
card-grid-Tags legen und sie ordnen sich als gleich hohe Zellen an:
{{< card-grid cols=2 >}}
{{< amazon "https://amzlink.to/az0sqPpjSZX54" >}}
{{< amazon "https://amzlink.to/az0demo1234" >}}
{{< /card-grid >}}
Midea Portasplit Cool Mobile Klimaanlage nur Kühlung
Raspberry Pi 5 (8 GB RAM)
Quad-Core Cortex-A76 @ 2,4 GHz, PCIe 2.0, Dual-4K-HDMI — der Einplatinenrechner für dein nächstes Homelab-Projekt.
Buttons #
Ein Button ist ein als Schaltfläche gestylter Link.
{{< button href="https://gohugo.io" target="_blank" >}}Zur Hugo-Doku{{< /button >}}
{{< button href="https://example.com/produkt" sponsored="true" >}}Affiliate-Link{{< /button >}}
Mit sponsored="true" bekommt der Button ein Einkaufswagen-Symbol und
rel="sponsored" - dadurch wird oben auf der Seite automatisch der
Werbehinweis eingeblendet (scroll mal hoch). Statt href kannst du auch
pageRef="posts/01-willkommen" für interne Ziele angeben.
Card #
Bettet einen Beitrag, eine Kategorie, Serie oder Seite als Karte mitten in den
Text ein - im selben Look wie die Karten der Übersichtsseiten. Der Typ wird
automatisch erkannt; mit type="article|category|series|page" lässt er sich
überschreiben.
{{< card "posts/01-willkommen" >}}
{{< card "series/beispiel-serie" >}}
Card Grid #
Mehrere Cards nebeneinander, im selben Grid-Look wie die Übersichtsseiten.
cols (optional, Standard 2, maximal 4) bestimmt die Spaltenzahl auf dem
Desktop; auf schmalen Viewports bricht das Grid auf eine Spalte um. In den
Inhalt gehören Card-Shortcodes.
{{< card-grid >}}
{{< card "posts/01-willkommen" >}}
{{< card "series/beispiel-serie" >}}
{{< /card-grid >}}
Mit cols=3:
{{< card-grid cols=3 >}}
{{< card "posts/02-markdown-grundlagen" >}}
{{< card "posts/03-admonitions" >}}
{{< card "posts/05-bilder-und-galerien" >}}
{{< /card-grid >}}
Carousel #
Ein horizontal wischbares Karussell. Jede Folie kann ein Bild oder beliebigen Markdown enthalten. Ohne JavaScript bleibt es ein per Swipe/Scroll bedienbarer Streifen; mit JS kommen Pfeil-Buttons, Punkte und Tastatursteuerung (Pfeiltasten) dazu.
Am Ende geht es standardmäßig wieder beim ersten Slide los; loop="false"
schaltet das ab (die Pfeile stoppen dann an den Enden). Mit auto=5 blättert
das Karussell alle 5 Sekunden automatisch weiter - nur bei aktivem loop,
pausiert bei Hover/Fokus (der Timer läuft danach dort weiter, wo er stand)
und respektiert reduzierte Bewegung. Die Pill des aktiven Slides füllt sich
mit dem Timer. ratio bestimmt das Seitenverhältnis
des Rahmens (Standard "16 / 9", z. B. ratio="21 / 9" oder ratio="4 / 3").
{{< carousel >}}
{{< carousel-slide >}}{{< /carousel-slide >}}
{{< carousel-slide >}}
### Auch Markdown
Jede Folie nimmt **beliebigen** Inhalt - Überschriften, Listen, Code.
{{< /carousel-slide >}}
{{< /carousel >}}
Und mit Automatik (auto=5) und reinen Text-Folien - deren Inhalt rückt
seitlich ein, damit die Pfeile nichts überdecken:
{{< carousel auto=5 ratio="21 / 9" >}}
{{< carousel-slide >}}### Folie eins …{{< /carousel-slide >}}
{{< carousel-slide >}}### Folie zwei …{{< /carousel-slide >}}
{{< carousel-slide >}}### Folie drei …{{< /carousel-slide >}}
{{< /carousel >}}
Chart #
Ein Diagramm via selbst gehostetem Chart.js, nur geladen, wenn der Shortcode vorkommt. Der innere Inhalt ist die Chart.js-Konfiguration als valides JSON; Achsen, Gitter und Legende folgen dem Theme und färben live um, wenn du auf den Dunkelmodus umschaltest.
{{< chart title="Besucher pro Monat" >}}
{ "type": "bar",
"data": { "labels": ["Jan", "Feb", "Mär"],
"datasets": [{ "label": "Besucher", "data": [820, 932, 1290] }] } }
{{< /chart >}}
Galerie #
Der gallery-Shortcode ordnet mehrere Bilder als Masonry-Spalten an. Im
Automatik-Modus schreibst du einfach ein Bild pro Zeile; cols (optional,
Standard 3) bestimmt die Spaltenzahl auf dem Desktop, auf dem Handy wird
daraus eine Spalte. Alle Bilder einer Galerie bilden eine durchwischbare
Lightbox-Gruppe (PhotoSwipe); verlinkte Bilder ([](url)) bleiben
normale Links und gehören nicht dazu.
{{< gallery cols="2" >}}




{{< /gallery >}}
Statt der Automatik kannst du die Spalten mit verschachtelten
gallery-column-Blöcken auch explizit belegen - cols wird dann
ignoriert, die Spaltenzahl ergibt sich aus der Zahl der Blöcke. Alle Details
(Spaltenlogik, Bildunterschriften, responsive Größen, verlinkte Bilder) zeigt
der Beitrag Bilder und Galerien.
GitHub #
Bettet die OpenGraph-Vorschau eines Repos ein. Das externe Vorschaubild lädt erst nach Zustimmung über den Consent-Manager Klaro - der Link zum Projekt funktioniert immer.
{{< github repo="gohugoio/hugo" >}}
Icons #
{{< ti name >}} setzt ein Tabler-Icon mitten in den Text, das mit der
Schriftgröße mitwächst - z. B.
oder
.
Jeder Name aus dem Tabler-Outline-Set funktioniert
(bewusst nur Outline, nicht Filled - das Theme bindet ausschließlich das
Strich-Set ein, damit alle Icons dieselbe Liniensprache sprechen).
KaTeX #
Setzt einmalig den Marker-Shortcode {{< katex >}} auf die Seite - er
lädt den (selbst gehosteten) KaTeX-Renderer. Danach schreibst du Mathematik
inline mit $ ... $ und abgesetzt mit $$ ... $$; geladen wird KaTeX nur,
wenn der Marker vorkommt.
{{< katex >}}
Inline: die Eulersche Identität $e^{i\pi} + 1 = 0$.
Inline: die Eulersche Identität $e^{i\pi} + 1 = 0$, abgesetzt die Gauß-Summe:
$$ \sum_{k=1}^{n} k = \frac{n(n+1)}{2} $$Block-, Matrizen- und mehrzeilige Formeln zeigt der Beitrag Diagramme und Mathe.
Lead #
Ein hervorgehobener Einleitungsabsatz. Der Inhalt wird als Markdown gerendert.
{{< lead >}}
Ein **Lead**-Absatz fasst den Beitrag in ein, zwei Sätzen zusammen.
{{< /lead >}}
Mermaid #
Schreibt ein Diagramm als Text in einen mermaid-Shortcode. Das (selbst
gehostete) Mermaid wird nur geladen, wenn der Shortcode vorkommt, und folgt
automatisch dem hellen bzw. dunklen Farbschema (auch beim Live-Umschalten).
{{< mermaid >}}
graph LR
A[Markdown] --> B[HTML]
{{< /mermaid >}}
graph LR A[Markdown] --> B[HTML]
Flowcharts, Sequenz-, Klassen-, Zustands-, Gantt- und weitere Diagrammtypen zeigt der Beitrag Diagramme und Mathe.
Specs #
Ein Datenblatt listet die Eckdaten eines Produkts als Zeilen mit Icon und
Bezeichnung. Mit title2 und einem value2 je Zeile wird daraus ein direkter
Vergleich zweier Produkte.
{{< specs title="Midea PortaSplit Cool" badge="Datenblatt" >}}
{{< spec icon="snowflake" label="Kühlleistung" value="2,35 kW" >}}
{{< spec icon="tag" label="Preis (UVP)" value="899 €" >}}
{{< /specs >}}
Mit title2 wird daraus ein Vergleich zweier Produkte; image/image2 setzen ein Produktbild je Spalte, link/link2 ergänzen einen Kauf-Button:


Tabs #
Tabs gruppieren alternative Inhalte (z. B. pro Betriebssystem). Tabs mit
gleichem group synchronisieren sich seitenweit: Wählst du in einer Gruppe
“macOS”, springen alle anderen Gruppen ebenfalls auf “macOS”. group ist
dabei nur der interne Sync-Schlüssel; label setzt den für Screenreader
vorgelesenen Namen der Tab-Leiste (ohne label greift die übersetzte
Standardbezeichnung “Tabs” - nie der group-Schlüssel selbst).
{{< tabs group="os" label="Betriebssystem" >}}
{{< tab label="Linux" icon="brand-debian" >}}
`sudo apt install hugo`
{{< /tab >}}
{{< tab label="macOS" icon="brand-apple" >}}
`brew install hugo`
{{< /tab >}}
{{< /tabs >}}
Installation per Paketmanager:
sudo apt install hugo
Installation per Homebrew:
brew install hugo
Installation per Winget:
winget install Hugo.Hugo.Extended
Mit default="macOS" wird ein anderer Tab als der erste vorausgewählt; mit
md=false wird der Inhalt eines Tabs nicht als Markdown interpretiert.
Diese zweite Gruppe nutzt dasselbe group="os" - wechsle oben das
Betriebssystem und beobachte, wie sie mitspringt (die Wahl wird zudem
gemerkt):
~/.config/hugo.toml.~/Library/Application Support/hugo.toml.%AppData%\hugo.toml.











