Einleitungstext und Bildliste standen fest verdrahtet in layouts/lampe/single.html, die Galerie lief ueber ein hartes "range seq 1 7". Inhaltliche Aenderungen erforderten damit Eingriffe ins Template. Der Text steht jetzt als Fliesstext in lichterei.md und wird ueber .Content gerendert, die Bilder als Liste "lampen" im Frontmatter mit optionaler Bildunterschrift. Das Template iteriert ueber die Liste, statt auf sieben Eintraege festgelegt zu sein. Leerer text-Wert unterdrueckt die figcaption und laesst den alt-Text auf "Lampe N" zurueckfallen - die Seite rendert damit unveraendert. Ausserdem: AGENTS.md als Arbeitsanweisung fuer die lokale LLM-gestuetzte Bearbeitung, CSS-Regel fuer figcaption ergaenzt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.1 KiB
robbis.space — Arbeitsanweisung
Hugo-Website. Deine Aufgabe ist fast immer: Inhalte ändern. Layout, Theme und Deployment stehen und sollen nicht angefasst werden.
Vorschau starten
cd /Users/robertrapp/robbis.space && hugo server -D
Läuft dann auf http://localhost:1313 und lädt bei jeder Dateiänderung neu. Zum Beenden Ctrl+C.
Wo Inhalte liegen
Alle Texte sind Markdown-Dateien unter content/projects/:
| Datei | Seite |
|---|---|
content/projects/_index.md |
Übersichtsseite /projects/ |
content/projects/mindboost.md |
/projects/mindboost/ |
content/projects/lichterei.md |
/projects/lichterei/ |
content/projects/festivals.md |
/projects/festivals/ |
content/projects/gemeinschaft.md |
/projects/gemeinschaft/ |
content/projects/kollektivarbeit.md |
/projects/kollektivarbeit/ |
Der Dateiname bestimmt die URL. Datei umbenennen = URL ändern.
Aufbau einer Inhaltsdatei
Jede Datei beginnt mit einem Frontmatter-Block zwischen ---, danach kommt
normales Markdown:
---
title: "Mindboost"
type: page
---
Hier steht der Fließtext als Markdown.
Nur diese Felder sind erlaubt:
| Feld | Pflicht | Bedeutung |
|---|---|---|
title |
ja | Überschrift, immer in Anführungszeichen |
type |
ja | nur page oder lampe |
date |
nein | Erstelldatum |
lastmod |
nein | Datum der letzten Änderung |
image |
nein | Vorschaubild, Pfad wie bei Bildern unten |
showTableOfContents |
nein | true oder false |
type: lampe benutzt das Sonderlayout layouts/lampe/single.html und wird
aktuell nur von lichterei.md verwendet. Im Zweifel page nehmen.
Erfinde keine Felder außerhalb dieser Tabelle — sie werden ignoriert.
Neue Seite anlegen
hugo new content/projects/meineseite.md
Das erzeugt den Frontmatter-Block bereits fertig mit type: "page".
Nur noch title anpassen und den Text darunter schreiben.
Die Seite erscheint automatisch unter /projects/meineseite/.
Damit sie auch im Hauptmenü auftaucht, muss ein Eintrag in hugo.toml
unter [[menu.main]] ergänzt werden — nur dann, wenn ausdrücklich gewünscht.
Bilder
Bilder gehören nach static/. Was dort liegt, landet unverändert im
fertigen Build. Eine Datei static/lampen/lampe1.jpg wird im Markdown so
eingebunden:

Der Pfad beginnt mit /, ohne static davor.
Sonderfall Lichterei
content/projects/lichterei.md ist die Lampengalerie und funktioniert
anders als die übrigen Seiten. Der Text unter dem Frontmatter ist der
Einleitungstext. Die Bilder stehen als Liste lampen: im Frontmatter:
lampen:
- bild: /lampen/lampe1.jpg
text: "Die erste, aus einem Weinkarton"
- bild: /lampen/lampe2.jpg
text: ""
bildist der Pfad ab/, die Datei muss unterstatic/lampen/liegen.textist die Bildunterschrift. Bei""wird keine angezeigt.
Neue Lampe hinzufügen: Bild nach static/lampen/ legen, dann einen
Eintrag mit bild und text an die Liste anhängen. Sonst nichts — die
Galerie zählt die Einträge selbst.
Fasse dafür nicht layouts/lampe/single.html an. Bilder und Text
kommen vollständig aus der Markdown-Datei.
Nicht anfassen
themes/gokarna/— Git-Submodule, fremder Code. Änderungen gehen beim nächsten Update verloren.public/— wird bei jedem Build neu erzeugt. Änderungen sind sofort weg.kirby/— trotz des Namens der Deployment-Container (nginx + Hugo). Nur anfassen, wenn ausdrücklich das Deployment geändert werden soll.layouts/undhugo.toml— nur nach ausdrücklicher Aufforderung.
Veröffentlichen
Push auf main genügt:
git add -A && git commit -m "Beschreibung" && git push
Gitea ruft danach deploy.php auf dem Server auf. Das Skript macht
git pull, aktualisiert die Submodules und baut die Seite mit hugo neu.
Es gibt keinen weiteren Schritt und nichts manuell hochzuladen.
Vor jedem Commit
hugo --quiet
Läuft das ohne Ausgabe durch, ist der Build in Ordnung. Fehler hier bedeuten, dass auch das Deployment fehlschlägt.