Architecture Decision Record · 0033

Footer-SDC-Schema — Figma-aligned 4-Column-Topology, abstrakte Slots durch semantische ersetzt

TL;DR — Footer-SDC-Schema wird von 4 abstrakten Slots (footer_first/_last/_utility_first/_utility_last) + align-Prop auf 6 semantische Slots (company_col/nav_col/highlights_col/kontakt_col/utility_links/copyright) umgestellt. Drei neue Drupal-Menüs (footer_navigation/_highlights/_kontakt) inkl. drei vorkonfigurierter Canvas-Menu-Blocks. Schema-Bruch akzeptiert — der bestehende Footer war Platzhalter, kein Live-Inhalt. Topology fix laut Figma 61622:33123, keine Variants.

Kontext

Der ursprüngliche Footer wurde in ADR-0008 (Header-Navbar-Slot-Refactor) am Rand miteingeführt: zwei Slot-Paare (footer_first/_last, footer_utility_first/_last) plus ein align-Boolean-Prop. Die Bezeichnungen waren bewusst abstrakt, weil zu dem Zeitpunkt kein finalisiertes Figma vorlag und das Schema flexibel bleiben sollte.

Mit P2503-84 liegt das Figma-Design figma.com/design/CHHDfbpX8Ys2LBiGs5HVK0, Node 61622:33123 vor und zeigt eine konkrete, feste Topology:

Die ursprünglichen 4 Slots passen zur neuen Topology nicht eindeutig: „Branding & Social" (ehemals footer_first) entspricht zwar grob company_col, aber die drei mittleren Spalten (Nav/Highlights/Kontakt) fehlten — sie hätten in einem einzigen footer_last-Slot landen müssen, was Editor-Selektivität (z.B. „lass die Highlights-Spalte weg") unmöglich gemacht hätte.

Drei zusätzliche Drupal-Menüs (footer_navigation, footer_highlights, footer_kontakt) werden vor-konfiguriert, weil die Inhalts-Editoren explizit nach getrennten Menü-Strukturen gefragt haben — anders als beim Header (eine Hauptnavigation) sollen Highlights und Kontakt nicht im selben Menü-Tree wie die Footer-Navigation hängen.

i
ADR-0008 bleibt accepted für den Header-Bereich (Navbar-SDC-Schema, logo/navigation/links-Slots, 1280-px-Content-Bound). Nur der dort am Rand mitdefinierte Footer-Schema-Teil wird durch dieses ADR ersetzt. Querverweis: solcom:amends="0008".

Entscheidung

Footer-SDC-Schema wird Figma-aligned umgestellt. Konkret:

Bisher (ADR-0008) Neu (ADR-0033) Inhalt
footer_firstcompany_colLogo, Company-Beschreibung, Social-Menu
(neu)nav_colsystem_menu_block:footer_navigation
(neu)highlights_colsystem_menu_block:footer_highlights
footer_lastkontakt_colsystem_menu_block:footer_kontakt + ggf. CTA
footer_utility_firstutility_linksImpressum / Datenschutz / Cookie-Einstellungen
footer_utility_lastcopyrightCopyright-Textblock

Rejected alternatives

Expand each rejected option to see the rationale.

Bestehende abstrakte 4 Slots beibehalten (footer_first/_last/_utility_*) rejected

Die mittleren drei Figma-Spalten (Nav, Highlights, Kontakt) hätten in einem einzigen footer_last-Slot kollabieren müssen. Damit wäre weder Editor-Selektivität pro Spalte möglich (eine Spalte kommentarlos weglassen), noch konsistente Spalten-Spacing-Mechanik. Die generischen Slot-Namen verschleiern zudem die Layout-Intent und erschweren Onboarding neuer Editoren / Theme-Developer.

Props-Driven Layout (column_count, layout_variant) rejected

Hätte SDC-Schema-Komplexität (Enum-Prop in Canvas) ohne realen Anwendungsfall erzeugt. Figma zeigt exakt eine Layout-Variante. Premature configurability bricht das Karpathy-„Simplicity First"-Prinzip. Bei künftiger Bedarfslage (z.B. 3-Column-Subpage-Footer) eigenes Schema oder eigene SDC.

Footer-Komplett-Implementation als separates Ticket statt P2503-84 rejected

Die solcom-review-Achse markierte die Footer-Implementation initial als „Spec-Creep" — Footer war im ursprünglichen PRD-Scope von P2503-84 als Out-of-Scope deklariert. Owner-Entscheidung (Marc, 2026-05-16): Footer bleibt im PR-Scope, weil (a) Header / Navbar / Footer eine kohärente Page-Shell sind und atomisches Deployment den Visual-Bruch im Live-System vermeidet, (b) die Inhalts-Editoren auf den Footer-Refresh warten, und (c) der Schema-Bruch ohne Live-Daten-Migration auskommt. Trade-off dokumentiert in diesem ADR statt Folgeticket.

Eigene SDC pro Footer-Spalte (footer-column) rejected

Hätte vier Slot-Wrapper-SDCs erzeugt, was Canvas-Tree-Tiefe und Render-Cycles ohne Mehrwert erhöht. Die Spalten haben gemeinsame Typografie + Hover-Styles (_footer_link in der Twig), aber kein internes Layout das ein SDC rechtfertigen würde. html_cva-Wrapper-Variablen im Footer-SDC reichen.

Plattform-Detection per item.original_link.getPluginId() rejected

Der getPluginId()-Wert für menu_link_content-Items ist menu_link_content:<uuid> — kein semantischer Plattform-Identifier. Ein dediziertes Plattform-Feld am Menü-Item-Entity-Bundle wäre zwar sauberer, erfordert aber Schema-Änderung + Migration für drei Bestands-Menüpunkte. Die gewählte Lösung (Host-Parse via parse_url im Preprocess-Hook) ist robust gegen Regional-Domains (xing.de, linkedin.cn) und Pfad-Suffixe, ohne Schema-Eingriff.

Consequences