Artikel · · 1 Min. Lesezeit
Folge 004: Seiten sind nur Dateien und trotzdem schlau strukturiert
Was in der CMS-Config steckt, warum Unterseiten wie Ordner funktionieren und SEO lieber einmal definiert wird statt zwanzigmal copy-paste.
Keine Datenbank, kein WordPress-Monster: Pages sind normale Markdown-Dateien unter src/content/pages/. Collections sind die Typen: Pages, Articles, Menüs, Tags, Glossar, Bausteine (blocks). Warum Issues dafür sinnvoll sind: Folge 002. Bausteine im Alltag: Folge 020.
Was config.yml macht
In public/admin/config.yml steht in YAML (strukturierte Textdatei), was Redakteure im CMS sehen: Titel, Beschreibung, Body, …
Früher hing das Menü an jeder Seite, bei hautuu gibt’s eine eigene menus-Collection. Für Pages kam hinzu:
parent(im CMS Übergeordnete Seite): Verweis auf eine übergeordnete Seite → URL wie/ueber-uns/preise/statt flach/preise/.
Eine Seite angucken
src/content/pages/index/index.md = Startseite.
- Oben Frontmatter = ausgefüllte Felder (im CMS links: Titel, Description (Beschreibung), Übergeordnete Seite, SEO usw.).
- Darunter Body (Inhalt) = Markdown (rechts im CMS eine einfache Preview).
Du speicherst → Datei ändert sich → beim Build wird HTML. In der IDE-Preview siehst du ungefähr, was GitHub auch rendert.
Articles & Tags (kurz)
Articles kriegen Tags wie Hashtags, keine Kategorien-Wüste. Verwandte Artikel per Extra-Feld wäre möglich; Tags reichen oft.
SEO: einmal definieren
Statt überall lose Felder zu kopieren: ein SEO-Objekt für mehrere Collections (DRY = don’t repeat yourself).
Praktisch:
- index / noindex: Impressum & Datenschutz oft noindex, damit Google nicht den Legal-Text als Hauptinhalt feiert.
- Tab-Titel und Meta-Beschreibung getrennt vom sichtbaren Seitentitel.
Backlog-Idee: optionales Inhaltsverzeichnis oben bei langen Texten.
Editor heute, CMS morgen
Jetzt tippst du Markdown oder lässt Cursor schreiben, später Sveltia unter /admin/ (Folge 013 zeigt PAT und ersten Login): links Seiten (Collection pages), Felder wie Titel, Status (Veröffentlicht = live nach Push). Gleiche Felder, gleiche Dateien, gleiche Git-History.