# robbis.space — Arbeitsanweisung Hugo-Website. **Deine Aufgabe ist fast immer: Inhalte ändern.** Layout, Theme und Deployment stehen und sollen nicht angefasst werden. ## Vorschau starten ```bash 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: ```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 ```bash 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: ```markdown ![Beschreibung](/lampen/lampe1.jpg) ``` 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: ```yaml lampen: - bild: /lampen/lampe1.jpg text: "Die erste, aus einem Weinkarton" - bild: /lampen/lampe2.jpg text: "" ``` - `bild` ist der Pfad ab `/`, die Datei muss unter `static/lampen/` liegen. - `text` ist 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/` und `hugo.toml` — nur nach ausdrücklicher Aufforderung. ## Veröffentlichen Push auf `main` genügt: ```bash 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 ```bash hugo --quiet ``` Läuft das ohne Ausgabe durch, ist der Build in Ordnung. Fehler hier bedeuten, dass auch das Deployment fehlschlägt.