Zum Hauptinhalt springen

MEC Small Assets — Webseiten-Reiter

Config-only Template (mec-template-small-assets): kein Center-Website-Layout im Monorepo. Inhalte liefern Dashboard und APIs; das v0-Frontend (smg-mec-small-assets-websites) liest öffentliche Daten pro Center.

Vorschau & URLs

URL-TypFunktioniert?Hinweis
v0 Preview / Staging (websitePublicUrlStaging, z. B. *.sawatzkimuehlenbruch-preview.de)JaHaupt-Vorschau — Layout lebt im v0-Repo
Cockpit-Vorschau (preview.cockpit-os.de/{slug})NeinKein Layout im Cockpit-Monorepo — Dashboard blendet die Zeile aus
Live / eigene DomainJaNach DNS-Go-Live bzw. websitePublicUrlProduction

Pflege der Staging-URL: Website-Management → Frontend-Kanäle (v0) → Reiter Website → Feld Preview / Staging.

Was

17 Dashboard-Reiter unter Center → Webseite, sichtbar wenn websiteTemplate = mec-template-small-assets. Speicherorte:

  • Website-Config: templateContent.mec-template-small-assets.* (öffentlich via public-visitor-surfacetemplatePublicContent.content)
  • Seiten: Page-Content-API pro pageType (Hero, SEO, customContent)

Entwicklungs-Default-Center: einkaufszentrum-abensberg (centerId 60d6cffb-3276-4e71-a789-bfaf68bb5815).

Warum

Multi-Center-Layout für kleine MEC-Assets — dedizierte Reiter pro Sektion/Unterseite (wie Forum Gummersbach), angepasst an Small-Assets-Startseite (Willkommenstext, Bild-Text-Blöcke, Centerplan, Modul-Teaser).

Wer ist betroffen

Redaktion, MEC-Betrieb, v0/Agenten (MCP, AgencyOS).

Wo

Dashboard: Center → Webseite (17 Reiter ab „Startseite: Willkommenstext & Hero“).

API (v0):

  • GET /api/centers/{centerId}/public-visitor-surfacedata.templatePublicContent.content.*
  • GET /api/centers/{centerId}/page-contentpageContents[]

Reiter & JSON-Pfade

Startseite

ReiterSpeicher
Startseite: Willkommenstext & Herohero.* — Texte, CTAs, backgroundImageUrl, centerplanImageUrl, slides[]
Startseite: Bild-Text-BlöckehomepageSections[] — geordnetes Array (headline, text, imageUrl, imageAlt, ctaLabel, ctaHref, variant)
Startseite: CTA-BoxctaBox.* — Titel, Text (HTML), Button (Link und/oder E-Mail), optionales Bild

CTA-Box-Felder (ctaBox):

FeldTypHinweis
titlestringÜberschrift
textstring (HTML)Rich Text aus dem Dashboard
buttonLabelstringButton-Beschriftung
buttonHrefstring?Interner Pfad (/kontakt) oder URL (https://…)
buttonEmailstring?E-Mail-Adresse — v0 rendert mailto:
imageUrlstring?Optionales Bild rechts/links
imageAltstring?Alt-Text; Fallback: title

Leere CTA-Box: Sektion ausblenden (zusätzlich pageVisibility.homepage_cta_box === false).

Hero-Slider: ≥1 Slide mit imageUrl → v0 rendert Slider; sonst Einzelbild (backgroundImageUrl).

Centerplan-Lightbox: CTA ctaHref: "#centerplan" in einem Bild-Text-Block — v0-Konvention, kein Extra-Feld.

Leeres homepageSections[]: Bild-Text-Sektion ausgeblendet (zusätzlich steuerbar via pageVisibility.homepage_sections).

Global

ReiterPfad
Footerfooter.tagline
Social Mediasocial.*
SEO (global)seo.homeMetaTitle, seo.homeMetaDescription, seo.homeOgImageUrl
Seiten ein/auspageVisibility.*

Unterseiten (shops, aktuelles, …): Standard an — nur false speichern.

Startseiten-Sektionen (homepage_*): Standard an — nur false speichern.

KeySektion
homepage_sectionsBild-Text-Blöcke
homepage_cta_boxCTA-Box
homepage_newsAktuelles-Vorschau
homepage_offersAngebote-Vorschau
homepage_shops_tickerLogo-Carousel
homepage_servicesServices-Vorschau

Unterseiten (page-content)

ReiterpageTypeZusatz
ShopsshopsHero + SEO
AktuellesaktuellesHero + SEO
AngeboteangeboteHero + SEO
ServicesservicecustomContent.faqs[]
JobsjobscustomContent.introText
ÖffnungszeitenoeffnungszeitencustomContent.specialNote, …
Kontakt & AnfahrtkontaktcustomContent.formSuccessMessage
Anfahrt (Kontakt-Seite)anfahrtBlock auf /kontakt: customContent.anfahrtDescription (Auto/ÖPNV), customContent.parkingSpaces
ImpressumimpressumRich Text in pageDescription
DatenschutzdatenschutzRich Text in pageDescription

Adresse, Telefon, E-Mail im Footer kommen aus Center-Stammdaten.

Anfahrt auf der Kontakt-Seite

FeldPfadBedeutung
Anfahrtstextpage-content anfahrtcustomContent.anfahrtDescriptionAllgemeine Hinweise (Autobahn, Bus, Bahn)
ParkplätzecustomContent.parkingSpacesAnzahl Stellplätze (Zahl)

Nicht mit dem globalen Reiter Anfahrt & Parken (parkingConfig) vermischen: MSA-v0 liest den Kontakt-Block aus page-content anfahrt. Parken-Kurztexte aus parkingConfig bleiben optional für andere Templates bzw. Fallback.

MCP

  • Schema: cockpit_website_config_schema?websiteTemplate=mec-template-small-assets — liefert templateContentSchema + 17 Tab-Hints (msa-*)
  • Schreiben: cockpit_update_center_website_config mit templateContent.mec-template-small-assets.* (deep-merge)
  • Unterseiten: cockpit_page_content

Tab-Felddefinitionen: apps/dashboard/src/lib/integration/mec-small-assets-mcp-tab-fields.ts

So testen

  1. Center auf mec-template-small-assets stellen (z. B. Abensberg).
  2. Reiter Startseite: Bild-Text-Blöcke — 1–2 Blöcke anlegen, speichern.
  3. Reiter Seiten ein/aus — z. B. homepage_services aus, speichern.
  4. Reiter Anfahrt (Kontakt-Seite) — Anfahrtstext + optional Parkplätze speichern; GET …/page-content?pageType=anfahrtcustomContent.anfahrtDescription / parkingSpaces.
  5. GET …/public-visitor-surfacecontent.homepageSections, content.pageVisibility.homepage_services prüfen.
  6. v0: Startseite rendert Blöcke; deaktivierte Sektionen fehlen; Kontakt zeigt Anfahrtstext.

Siehe auch: Forum Gummersbach Webseiten-Tab, Public Center Website API.

Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /center-website/mec-small-assets-webseiten-tab