Forum Gummersbach — Webseiten-Reiter
Config-only Template (forum-gummersbach): kein Center-Website-Layout im Monorepo. Inhalte liefern Dashboard und APIs; das v0-Frontend liest öffentliche Daten.
Vorschau: nur über v0 Preview-/Staging-URL — nicht über preview.cockpit-os.de. Siehe MEC Small Assets — Vorschau & URLs (gleiches Prinzip).
Was
23 Dashboard-Reiter unter Center → Webseite, sichtbar wenn websiteTemplate = forum-gummersbach. Die Reiter-Reihenfolge folgt dem Seitenaufbau (Startseite oben → unten, dann Unterseiten, global am Ende).
Speicherort (fast alles):
templateContent.forum-gummersbach.*— öffentlich viapublic-visitor-surface→templatePublicContent.content- Ausnahme Rechtstexte: Impressum und Datenschutz bleiben in page-content (
pageType=impressum/datenschutz) — dafür gibt es keine FG-Reiter.
Warum
Externe Redaktion und v0 sollen dieselbe Tab-Struktur wie in der v0-Spezifikation sehen — Reiter = sichtbare Sektion, ohne generischen „Seiten-Texte“-Dropdown. Unterseiten-Inhalte liegen vollständig in templateContent.*Page, damit v0 nur eine Quelle lesen muss.
Wer ist betroffen
Redaktion, Center-Betrieb, v0/Agenten (MCP, AgencyOS).
Wo
Dashboard: Center → Webseite (23 Reiter ab „Hero“).
API (v0):
GET /api/centers/{centerId}/public-visitor-surface→data.templatePublicContent.content.*- Unterseiten: Felder unter
content.shopsPage,content.aktuellesPage, … (nicht page-content)
Reiter & JSON-Pfade
Startseite (Reihenfolge = Sektionen auf der Seite)
| Reiter | Speicher |
|---|---|
| Hero | templateContent.forum-gummersbach.hero.* |
| Keyfacts | templateContent.forum-gummersbach.keyfacts.* |
| GummersBOT | templateContent.forum-gummersbach.chatbot.* (inkl. mascotImageUrl, feature1Label–feature4Sub) |
| Aktuelles | templateContent.forum-gummersbach.newsSection.* — nur Überschrift/CTA; News-Inhalte aus Modul |
| Shop-Logos | templateContent.forum-gummersbach.brandMarquee.headline |
| Shop-Finder | templateContent.forum-gummersbach.shopFinder.* |
Unterseiten (*Page-Keys)
| Reiter | Key | Zusatzfelder |
|---|---|---|
| Shops | shopsPage | Hero + SEO |
| Aktuelles | aktuellesPage | Hero + SEO (Seite /aktuelles) |
| Angebote | angebotePage | Hero + SEO |
| Etagenplan | etagenplanPage | Titel + SEO (kein Hero-Bild) |
| Gutscheine | gutscheinPage | + cardImageUrl, headline, description, ctaLabel, ctaHref |
| Jobs | jobsPage | + emptyStateText |
| Vermietung | vermietungPage | + introText, contactEmail, contactPhone, formRecipientEmail |
| Services | servicesPage | + faqs[] |
| Öffnungszeiten | oeffnungszeitenPage | + specialNote, parkingHoursNote, gastroNote |
| Anfahrt & Parken | anfahrtPage | + busLines, trainNote, parkingNote, parkingTariff[], googleMapsUrl |
| Kontakt | kontaktPage | + formRecipientEmail |
| Über das Center | ueberUnsPage | + identityText, timeline[] (year, event), facts[] |
Gemeinsame Hero-/SEO-Felder pro Unterseite (wo vorgesehen): pageTitle, pageSubtitle, backgroundImageUrl, metaTitle, metaDescription.
Global (am Ende)
| Reiter | Pfad |
|---|---|
| Footer | footer.tagline, footer.copyrightText |
| Social Media | social.* |
| SEO (global) | seo.* |
| Seiten ein/aus | pageVisibility.* |
Seiten ein/aus: Standard ist „an“. Nur impressionen und newsletter sind standardmäßig aus (opt-in: true speichern). Andere Seiten: nur false speichern.
Feldmigration (kein Datenverlust)
Beim Lesen in Editoren gelten Fallbacks auf alte page-content-customContent-Felder, bis v0 migriert hat. Schreiben geht nur in die neuen *Page-Keys (Deep-Merge in templateContent.forum-gummersbach).
| Bereich | Neuer Key | Fallback |
|---|---|---|
| Timeline | event | title |
| Vermietung | introText, … | alte headline/subline in customContent |
| Gutschein | headline, description, … | alte validityNote, purchaseUrl, … |
| Services FAQs | servicesPage.faqs | customContent.faqs |
Template aktivieren
- Center → Webseite → Reiter Aktivierung
- Layout-Template Forum Gummersbach wählen
- Speichern — es erscheinen genau die 23 Reiter
So testen
- Test-Center auf
forum-gummersbachstellen (nicht Live-Center ohne Abstimmung). - Reiter Hero befüllen, speichern.
GET …/public-visitor-surface— prüfen:templatePublicContent.content.hero.headline.- Reiter Über das Center — Timeline-Eintrag anlegen, speichern.
GET …/public-visitor-surface—content.ueberUnsPage.timelineprüfen.- MCP:
cockpit_get_center_website_config— Tab-Hints fürfg-*Reiter.
MCP
Tab-Felddefinitionen: apps/dashboard/src/lib/integration/forum-gummersbach-mcp-tab-fields.ts (merged in Website-Config-MCP-Schema). Alle Pfade unter templateContent.forum-gummersbach.*.
Siehe auch: Public Center Website API.
Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /center-website/forum-gummersbach-webseiten-tab