Blocktyp-Verträge
Zweck und Umfang
Diese Referenz beschreibt veröffentlichte Kernblöcke, editierbare Felder, Übersetzungen, Kindregeln und öffentliches Rendering. Die Blocktypenverwaltung zeigt denselben Vertrag schreibgeschützt; sie definiert weder eigene Schemas noch neue Bearbeitungsformulare.
Das Plugin-System fügt über PluginBlockTypeDefinition, PluginBlockPackDefinition und PluginBlockRegistry rein deklarative Plugin-Block-Hooks hinzu. Aktivierte Plugins können plugin-eigene Handles wie analytics-tools::score-card für die Discovery bereitstellen, aber diese Deklarationen ersetzen nicht die ausgelieferten Kern-Blockverträge, Kern-Block-Views, Kern-Seeder oder die Blockbearbeitungs-Services. Unqualifizierte Handles im Kern-Stil wie hero bleiben kerneigen und werden für Plugin-Deklarationen abgelehnt.
Definition
A Block Type Contract ist die aktuelle technische Vereinbarung darüber, wie sich ein Blocktyp über CMS-Schichten hinweg verhält:
- Katalogidentität: Slug, Label, Kategorie, Status und System- oder Container-Metadaten
- Quelle des Admin-Formulars: Welcher Blade-Teil bearbeitet derzeit den Block und welche Felder er offenlegt
- Validierung und Anfragebearbeitung: Wie
WebBlocks\Cms\Http\Requests\Admin\BlockRequestNormalisiert und validiert derzeit Blocknutzlasten - Speichereigentum: welche Werte weiterleben
blocks, dedizierte Übersetzungszeilen,block_mediaoder verwandte Datensätze - Übersetzungseigentum: welche benutzerseitigen Felder im Besitz des Gebietsschemas sind
- Gemeinsamer Besitz: Welche Einstellungen oder Beziehungen bleiben standortübergreifend gemeinsam?
- Medien- oder Beziehungseigentum: direkt
media_id, bestelltblock_media, Navigationssuchen oder Beziehungen auf derselben Seite - Kinderunterstützung: ob der Block ein Container ist und ob untergeordnete Typen eingeschränkt sind
- Öffentliche Renderer-Quelle: Welcher öffentliche Blade rendert den Block heute teilweise
- Renderer-Root-Vertrag: ob der Block sein öffentliches Root-Markup besitzt oder sich auf den generischen Wrapper-Pfad verlässt
- Portabilität und Revisionen: ob die aktuelle Speicherform weiterhin Revisionen, Klonen, Export/Import und Promotion durchlaufen soll
- Tests und Lücken: bekannte gezielte Berichterstattung, unklares Verhalten oder Kompatibilitätsschuld
Aktuelle Vertragsbegriffe
Nachfolgend verwendete Statusbegriffe:
clear: Admin-Formular, Request-Verarbeitung, Speicherung und Renderer stimmen weitgehend übereinmostly clear: der aktuelle Vertrag ist verständlich, hat aber einen nennenswerten Vorbehalttransitional: der aktuelle Vertrag trägt bewusst einen Kompatibilitätspfad oder ein gemischtes Eigentumsmusterneeds review: der installierte Vertrag muss vor Nutzung bestätigt werdenlegacy/fallback: das veröffentlichte Verhalten hängt von einem Fallback- oder Kompatibilitätspfad ab
Regeln zum Speicher-Eigentum
Aktuelle und zukünftige Vertragsarbeiten sollten diese Eigentumsregeln explizit beibehalten:
- Die benutzerseitige Kopie gehört in Übersetzungszeilen, wenn der Block im Besitz des Gebietsschemas ist
- Gemeinsam genutzte Betriebs- oder Einstellungsdaten gehören zu gemeinsam genutzten Blockeinstellungen oder expliziten Beziehungen
- Medien nutzen sollten
media_idoderblock_mediaggf. Eigentumspfade - Vermeiden Sie es, benutzerbezogene Inhalte in beliebige gemeinsame Einstellungen zu verschieben
- Halten Sie Kompatibilitätsspeicherpfade dokumentiert, wenn sie sich weiterhin auf öffentliche Ausgaben oder Importe auswirken
Von CMS 1.98.6 wird das kompatible settings-Modell/API-Feld durch relationale Datensätze unterstützt. Bekannte Kernfelder verwenden endlich typisierte Darstellungs-, Medien-, Navigations- und Inhaltsspalten. Inhaltsbindungen, Sammlungskonfiguration und Anwendungsinstanzwerte verfügen über separate Datensätze; Typisierte Knoten behalten Struktur, Reihenfolge und historische/Plugin-Erweiterungen bei. CMS 1.98.8 hat die temporären JSON-Rollback-Kopien entfernt; Maßgebend ist SQL. Der Editor, das Übersetzungseigentum, die API-Nutzlasten und die Renderer-Methoden behalten ihre bestehenden Verträge; Durch die Speichermigration werden Kopien im Besitz des Gebietsschemas nicht in freigegebene Einstellungen verschoben.
Validierung der Bearbeitungseinstellungen
CMS 1.105.9 ergänzt eine versionierte authoring_settings_schema-Beschreibung für alle 55 veröffentlichten Kernblöcke. Prüfen Sie vor dem Übermitteln eines Feldes die getrennten Schreibregeln für Erstellung, PATCH und Admin. Neue oder geänderte Werte müssen den deklarierten Typen, Auswahlmöglichkeiten und Grenzen entsprechen. Nicht unterstützte Felder werden mit Validierungsfehlern abgelehnt, statt stillschweigend akzeptiert oder geleert zu werden. Dieser Vertrag wird im Code definiert; er ist weder ein bearbeitbares Schema noch ein automatischer Formulargenerator.
Unveränderte historische Werte bleiben bei unabhängigen Änderungen sowie beim vertrauenswürdigen Klonen, Staging und Wiederherstellen von Revisionen erhalten. Neue Blöcke und vollständige Ersetzungen müssen die aktuelle Validierung bestehen. Plugins ohne Schema behalten ihr bisheriges Verhalten. Optionale skalare Plugin-Schemata ersetzen nicht die Prüfungen für Medien, Anwendungen oder Dynamic Content. HTML bleibt menschlicher Bearbeitung vorbehalten.
Die Einstellungsschemata je Block beschreiben die Operationsmetadaten, Kompatibilitätsregeln und den schreibgeschützten Kompatibilitätsbefehl webblocks:blocks:audit-settings. Die separate Katalogprüfung unten untersucht die ausgelieferten Formulare und Renderer, nicht die gespeicherten Einstellungen.
Ausgelieferte Quellen
Die Referenz verwendet ausgelieferten Katalog, Formulare und Renderer.
- Katalogquelle:
src/Support/Blocks/CoreBlockTypeCatalogSyncer.php - Blockbearbeitungsanforderungsnormalisierung:
src/Http/Requests/Admin/BlockRequest.php - Persistenzhelfer:
src/Support/Blocks/BlockPayloadWriter.php,src/Support/Blocks/BlockTranslationWriter.php,src/Support/Blocks/BlockTranslationResolver.php - Übersetzungsregister:
src/Support/Blocks/BlockTranslationRegistry.php - admin-Formulare:
resources/views/admin/blocks/types/*.blade.php - öffentliche Renderer:
resources/views/pages/partials/blocks/*.blade.php - Abdeckungsreferenzen: Blockkatalog, Rendering, Übersetzung und Slug-spezifische Tests unter
tests/Feature/
Veröffentlichte Kernblocktypen, die derzeit hier dokumentiert sind: 55.
Katalogabgleich: WebBlocks CMS 1.105.8. Die Tabelle deckt alle 55 veröffentlichten Kerndefinitionen ab; sieben weitere Definitionen bleiben unveröffentlicht. Bei den nachstehenden Notizen zu späteren Phasen handelt es sich um historische Aufzeichnungen, nicht um eine zweite aktuelle Katalogzählung.
Audit-Befehl
Betreiber und Entwickler können diese schreibgeschützte Katalogprüfung ausführen:
php artisan block-types:contracts-audit
php artisan block-types:contracts-audit --json
Der Befehl ist rein lesend.
- er verändert die Datenbank nicht
- er hängt nicht von installierten Site-Inhalten ab
- er liest die ausgelieferten Kern-Katalogdefinitionen
- er prüft das Vorhandensein der ausgelieferten Admin-Formular- und öffentlichen Renderer-Dateien
- er berichtet Übersetzungsfamilien-Metadaten und grundlegende Container-Unterstützung
Der Befehl ist eine Aktualitätshilfe für Katalog- und Dateipräsenz-Drift. Er ersetzt nicht die ausführlicheren Vertragsnotizen in diesem Dokument.
Schreibgeschützte Verwaltungsansicht
Öffnen Sie Vertragsdetails schreibgeschützt unter Admin -> System -> Block Types.
- jede Zeile kann ein
Block Type Contract-Modal öffnen - das Modal ist rein informativ und sendet keine Aktualisierungen
- es zeigt Katalog-, Admin-Formular-, Speicher-, Übersetzungs-, Medien- oder Beziehungs-, Kind-, Renderer- und Lücken-Details aus dem ausgelieferten Code
- es macht die Blocktypen-Verwaltung nicht zu einem Schema-Editor oder Formular-Builder
- eigene oder Entwurfs-Blocktypen können das Modal weiterhin öffnen, zeigen aber möglicherweise
No shipped contract is documented for this block type yet., wenn kein Kernvertrag definiert ist
Matrix der veröffentlichten Blockverträge
Inhalt
Header — header
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | header |
| Bezeichnung | Header |
| Kategorie | content |
| Übersetzbare Felder | title über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | variant als Überschriftenebene; settings.alignment; gemeinsamer Anker in settings.anchor mit Legacy-Fallback auf url |
| Medien-/Beziehungsfelder | TOC für denselben Steckplatz liest verankerte Header-Blöcke |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Kanonischer Überschriften-Block; der Vertrag für den gemeinsamen Anker ist klar, es besteht aber weiterhin ein Legacy-Fallback-Verhalten über url. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/header.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/header.blade.php |
| Renderer-Root-Vertrag | Besitzt sein Root-Überschriftenelement |
| Tests / Abdeckung | SyncCoreBlockTypesCommandTest, PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Einfacher Text — plain_text
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | plain_text |
| Bezeichnung | Einfacher Text |
| Kategorie | content |
| Übersetzbare Felder | content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | settings.alignment |
| Medien-/Beziehungsfelder | Keine |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Einfacher übersetzter Grundbaustein für Fließtext. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/plain_text.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/plain_text.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen Stamm <p> |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Rich Text — rich-text
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | rich-text |
| Bezeichnung | Rich Text |
| Kategorie | content |
| Übersetzbare Felder | content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Keine |
| Medien-/Beziehungsfelder | Keine |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Sichere HTML-Speicherung und Übersetzungsverantwortung sind klar geregelt. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/rich-text.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/rich-text.blade.php |
| Renderer-Root-Vertrag | Besitzt sein .wb-rich-text-Root, wenn Inhalt vorhanden ist |
| Tests / Abdeckung | RichTextBlockTest, PublicRichContentTest, BlockTranslationIntegrityTest |
Code — code
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | code |
| Bezeichnung | Code |
| Kategorie | content |
| Übersetzbare Felder | title, subtitle, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | settings.language |
| Medien-/Beziehungsfelder | Keine |
| Kind-/Container-Verhalten | Kein Container; historische Kindzeilen bleiben erhalten, aber neue Kindplatzierung wird nicht unterstützt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Block richtet den übersetzten Code-Titel, die Bezeichnung und den Snippet-Inhalt an der bestehenden Textübersetzungsarchitektur aus und ignoriert in der öffentlichen Ausgabe nun beliebige historische Kindbäume. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/code.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/code.blade.php |
| Renderer-Root-Vertrag | Besitzt das Stammverzeichnis <pre><code> |
| Tests / Abdeckung | PublicRichContentTest, BlockTypePhaseThreeContractsTest, PageBuilderExperienceTest |
Button Link — button_link
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | button_link |
| Bezeichnung | Button Link |
| Kategorie | content |
| Übersetzbare Felder | title-Bezeichnung über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | settings.url; settings.target; geteiltes variant |
| Medien-/Beziehungsfelder | Keine |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Geteilte URL und geteiltes Ziel sind mit der übersetzten Bezeichnung konsistent. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/button_link.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/button_link.blade.php |
| Renderer-Root-Vertrag | besitzt seinen Stamm <a.wb-btn> |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest |
Card — card
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | card |
| Bezeichnung | Card |
| Kategorie | layout |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | Gemeinsam genutzt media_id; settings.layout_name; settings.background_position; settings.background_overlay; optional settings.url und settings.target |
| Medien-/Beziehungsfelder | Optionaler Hintergrund image über direktes media_id; Blöcke der untergeordneten Region definieren die Struktur |
| Kind-/Container-Verhalten | Container; als direkte Kinder sind ausschließlich card_header, card_body und card_footer erlaubt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Karte ist eine zusammensetzbare Shell. Die optionale Whole-card-URL ist sicher und semantisch; Redakteure dürfen keine verschachtelten interaktiven Steuerelemente in verknüpften Karten platzieren. Es unterstützt Medienbibliothek-Hintergründe und behält ein minimales Legacy-Fallback für ältere Zeilen ohne Kartenbereiche bei. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/card.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/card.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen <article class="wb-card">-Stamm oder einen semantischen <a class="wb-card wb-no-decoration">-Stamm, wenn er verknüpft ist |
| Tests / Abdeckung | CardClickableRenderTest, PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, BlockTranslationIntegrityTest, MediaVisualBlockContractsTest |
Card Header — card_header
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | card_header |
| Bezeichnung | Card Header |
| Kategorie | layout |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.layout_name, settings.icon_slug, settings.icon_tone, settings.icon_size |
| Medien-/Beziehungsfelder | Nur Beziehung zum übergeordneten card |
| Kind-/Container-Verhalten | Container; darf nur unter card platziert werden; Card-Regionskinder sind nicht erlaubt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Composable Card-Regionsblock für header content. Optionale Symbole verwenden aktive content-Katalog-Slugs und werden nur über sichere Symbol-, Ton- und Größenklassen gerendert. Der Kartenkopf hat keine Ausweiskopie und gibt daher keinen Ausweiston ab. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/card_header.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/card_header.blade.php |
| Renderer-Root-Vertrag | Besitzt das Stammverzeichnis <div class="wb-card-header"> |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, PublicIconBadgeSupportTest |
Card Body — card_body
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | card_body |
| Bezeichnung | Card Body |
| Kategorie | layout |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.layout_name |
| Medien-/Beziehungsfelder | Nur Beziehung zum übergeordneten card |
| Kind-/Container-Verhalten | Container; darf nur unter card platziert werden; Card-Regionskinder sind nicht erlaubt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Komponierbarer Card-Regionsblock für den Hauptinhalt. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/card_body.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/card_body.blade.php |
| Renderer-Root-Vertrag | Besitzt den Stamm <div class="wb-card-body"> |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Card Footer — card_footer
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | card_footer |
| Bezeichnung | Card Footer |
| Kategorie | layout |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.layout_name |
| Medien-/Beziehungsfelder | Nur Beziehung zum übergeordneten card |
| Kind-/Container-Verhalten | Container; darf nur unter card platziert werden; Card-Regionskinder sind nicht erlaubt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Komponierbarer Card-Regionsblock für Fußzeilen- oder Aktionsinhalte. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/card_footer.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/card_footer.blade.php |
| Renderer-Root-Vertrag | ist Eigentümer des Stammverzeichnisses <div class="wb-card-footer"> |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Stat Card — stat-card
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | stat-card |
| Bezeichnung | Stat Card |
| Kategorie | content |
| Übersetzbare Felder | title, subtitle, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Das kanonische url bleibt auf der Blockzeile geteilt |
| Medien-/Beziehungsfelder | Keine |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Block behält das bestehende optionale URL-Feld bei und rendert nun einen einfachen öffentlichen Link, wenn eine URL vorhanden ist. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/stat-card.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/stat-card.blade.php |
| Renderer-Root-Vertrag | Besitzt sein Stat-Card-Root |
| Tests / Abdeckung | StatCardTest, BlockTranslationIntegrityTest |
Bild — image
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | image |
| Bezeichnung | Bild |
| Kategorie | content |
| Übersetzbare Felder | caption, alt text über Bildübersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsam genutzt media_id; gemeinsam genutztes kanonisches url; settings.viewer_enabled; settings.viewer_group |
| Medien-/Beziehungsfelder | Direkte Bild-Medienbeziehung über media_id |
| Kind-/Container-Verhalten | Kein Container; historische Kindzeilen bleiben erhalten, aber neue Kindplatzierung wird nicht unterstützt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Bildunterschrift und alt text sind Eigentum des Gebietsschemas, während Medien, optionale Link-URL und Betrachtergruppierung weiterhin gemeinsam genutzt werden. Explizite Links haben Vorrang; andernfalls aktivierte Bildblöcke mit derselben Gruppe teilen sich den vorhandenen CMS Gallery Viewer, ohne die Seitenzusammensetzung zu ändern. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/image.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/image.blade.php |
| Renderer-Root-Vertrag | Besitzt sein semantisches <figure>-Stammverzeichnis, wenn Medien vorhanden sind, und kann sich bei einem gruppierten Galerie-Viewer registrieren |
| Tests / Abdeckung | MediaVisualBlockContractsTest, PublicMediaBlocksTest, BlockTranslationIntegrityTest, PublicOverlayRegistryTest |
Galerie — gallery
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | gallery |
| Bezeichnung | Galerie |
| Kategorie | content |
| Übersetzbare Felder | Pro Galerie-Element alt_text, caption, overlay_title und overlay_text über block_gallery_item_translations |
| Geteilte/Einstellungsfelder | Gemeinsame gallery-Präsentationseinstellungen plus optionaler Viewer title und geordnete block_media gallery-Elementbeziehungen |
| Medien-/Beziehungsfelder | Geordnete block_media-Zeilen mit der Rolle gallery_item; locale-eigene Galerie-Element-Texte liegen in block_gallery_item_translations; gespeicherte Legacy-Werte für title/subtitle am Block können noch existieren, werden vom öffentlichen Rendering aber ignoriert |
| Kind-/Container-Verhalten | Kein Container; historische Kindzeilen bleiben erhalten, aber neue Kindplatzierung wird nicht unterstützt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Gallery ist jetzt ein Mediensammlungsblock. Das normale Admin-Formular verwendet einen kompakten Listenzeilen-Editor anstelle der älteren ausgewählten Assets grid. Sein verschachtelter Add Gallery Items-Picker verbleibt im gemeinsamen Administratorvertrag #wb-overlay-root, sodass WebBlocks UI den gestapelten modalen Lebenszyklus besitzt und lange kompakte Ergebnislisten die natürliche Zeilenhöhe beibehalten, während der modale Körper der Scroll-Container bleibt. Öffentliche Varianten sind unterschiedlich: grid behält gleiche Zellen bei, masonry verwendet CSS columns mit natürlicher image-Höhe und collage behält die Zusammensetzung mit der ersten Zeile bei. Ältere gespeicherte masonary-Werte werden weiterhin akzeptiert und auf den kanonischen masonry-Pfad normalisiert. Die Galerie verfügt nicht mehr über die Ausgabe von Einleitungsüberschriften oder Absätzen. Redakteure sollten content_header plus plain_text oder rich-text vor der Galerie platzieren, wenn eine Abschnittskopie erforderlich ist. Der optionale Viewer title beschriftet nur das Lightbox-Modal header. Auf älteren Einstellungen basierende Fallback-Elemente bleiben für ältere content lesbar. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/gallery.blade.php sowie resources/views/admin/blocks/types/partials/gallery-items-editor.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/gallery.blade.php |
| Renderer-Root-Vertrag | Besitzt sein Galerie-Wrapper-Root und registriert ein Viewer-Modal unter #wb-overlay-root, wenn die Lightbox aktiviert ist |
| Tests / Abdeckung | MediaVisualBlockContractsTest, PublicMediaBlocksTest, PageBuilderExperienceTest, SiteCloneServiceTest, SiteExportImportTest, SitePromotionTest, ReconstructionIntegrityTest, SharedSlotRevisionTest |
Download — download
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | download |
| Bezeichnung | Download |
| Kategorie | content |
| Übersetzbare Felder | title, subtitle über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Geteiltes media_id; geteiltes variant |
| Medien-/Beziehungsfelder | Direkte Download-Medienbeziehung über media_id |
| Kind-/Container-Verhalten | Kein Container; historische Kindzeilen bleiben erhalten, aber neue Kindplatzierung wird nicht unterstützt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Block hält die ausgewählten Download-Medien und die Button-Variante geteilt, während sichtbare Bezeichnung und Hilfstext in den bestehenden Textübersetzungspfad verschoben werden. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/download.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/download.blade.php |
| Renderer-Root-Vertrag | Besitzt sein CTA-Wrapper-Root, wenn Medien vorhanden sind |
| Tests / Abdeckung | MediaVisualBlockContractsTest, PublicMediaBlocksTest, AudioContentApiTest |
Datei — file
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | file |
| Bezeichnung | Datei |
| Kategorie | content |
| Übersetzbare Felder | title, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Geteiltes media_id; geteilte kanonische url |
| Medien-/Beziehungsfelder | Direkte Medienbeziehung über media_id mit Fallback auf eine externe URL |
| Kind-/Container-Verhalten | Kein Container; historische Kindzeilen bleiben erhalten, aber neue Kindplatzierung wird nicht unterstützt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Block produktisiert den ausgelieferten File-Renderer mit einem eigenen Admin-Formular und hält die geteilte Verantwortung für die Dateiquelle zwischen Medien und externem URL-Fallback explizit. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/file.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/file.blade.php |
| Renderer-Root-Vertrag | Besitzt sein File-Card-Root |
| Tests / Abdeckung | MediaVisualBlockContractsTest, PublicMediaBlocksTest, AudioContentApiTest |
Video — video
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | video |
| Bezeichnung | Video |
| Kategorie | content |
| Übersetzbare Felder | title, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Geteiltes media_id; geteilte kanonische url |
| Medien-/Beziehungsfelder | Direkte Medienbeziehung über media_id mit sicherem Fallback auf eine externe URL |
| Kind-/Container-Verhalten | Kein Container; historische Kindzeilen bleiben erhalten, aber neue Kindplatzierung wird nicht unterstützt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Block ergänzt das fehlende Admin-Formular und den Speicherpfad, sodass hochgeladene Videomedien, sichere externe Anbieter-URLs, übersetzte sichtbare Texte und das öffentliche Fallback-Verhalten nun denselben Vertrag beschreiben. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/video.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/video.blade.php |
| Renderer-Root-Vertrag | Besitzt sein Video-Card-Root |
| Tests / Abdeckung | MediaVisualBlockContractsTest, PublicMediaBlocksTest, AudioContentApiTest |
Audio — audio
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | audio |
| Bezeichnung | Audio |
| Kategorie | content |
| Übersetzbare Felder | title, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Geteiltes media_id; geteilte kanonische url |
| Medien-/Beziehungsfelder | Direkte Medienbeziehung über media_id mit Fallback auf eine externe URL |
| Kind-/Container-Verhalten | Kein Container; historische Kindzeilen bleiben erhalten, aber neue Kindplatzierung wird nicht unterstützt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Admin, Content Plan und inkrementelle Blockschreibvorgänge akzeptieren audio-Medien mit der Art other und einem audio/* MIME-Typ; Inkompatible Medien werden abgelehnt. Lokalisierte Kopien und sicheres No-Empty-Controls-Rendering bleiben nativ. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/audio.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/audio.blade.php |
| Renderer-Root-Vertrag | Besitzt sein Audio-Card-Root |
| Tests / Abdeckung | MediaVisualBlockContractsTest, PublicMediaBlocksTest, AudioContentApiTest |
Tabelle — table
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | table |
| Bezeichnung | Tabelle |
| Kategorie | content |
| Übersetzbare Felder | title, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Geteiltes variant; der Renderer prüft zusätzlich den settings.rows-Fallback |
| Medien-/Beziehungsfelder | Keine |
| Kind-/Container-Verhalten | Kein Container; historische Kindzeilen bleiben erhalten, aber neue Kindplatzierung wird nicht unterstützt |
| Aktueller Status | mostly clear |
| Bekannte Lücken / Hinweise | Der Block richtet die Verantwortung für übersetzten Titel und Zeilentexte an der bestehenden Textübersetzungsarchitektur aus und ignoriert in der öffentlichen Ausgabe nun beliebige historische Kindbäume; der Legacy-Fallback-Pfad über settings.rows bleibt dokumentiert. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/table.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/table.blade.php |
| Renderer-Root-Vertrag | Besitzt sein Tabellen-Wrapper-Root |
| Tests / Abdeckung | PublicRichContentTest, BlockTypePhaseThreeContractsTest, PageBuilderExperienceTest |
Zitat — quote
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | quote |
| Bezeichnung | Zitat |
| Kategorie | content |
| Übersetzbare Felder | Derzeit keine in der Registry |
| Geteilte/Einstellungsfelder | Kanonische Felder title, subtitle, content, variant |
| Medien-/Beziehungsfelder | Keine |
| Kind-/Container-Verhalten | Kein Container; historische Kindzeilen bleiben erhalten, aber neue Kindplatzierung wird nicht unterstützt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Block behandelt Quote in der öffentlichen Ausgabe nicht mehr als Layout-/Container-Wrapper, während vorhandene gespeicherte Kindzeilen in den Admin-Blockbäumen erhalten bleiben. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/quote.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/quote.blade.php |
| Renderer-Root-Vertrag | Besitzt sein Zitat-Root |
| Tests / Abdeckung | PublicRichContentTest, PageBuilderExperienceTest |
Hero — hero
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | hero |
| Bezeichnung | Hero |
| Kategorie | content |
| Übersetzbare Felder | title, subtitle, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsam genutzt media_id; geteilt variant; settings.layout; settings.title_tag; settings.background_position; settings.background_overlay |
| Medien-/Beziehungsfelder | Optionaler Hintergrund image über direktes media_id; untergeordnete button_link-Blöcke für Aktionen |
| Kind-/Container-Verhalten | Container; button_link-Kinder (Legacy-button ebenfalls zulässig), keine feste Anzahl |
| Aktueller Status | transitional |
| Bekannte Lücken / Hinweise | Hero ist jetzt ein veröffentlichter, quellengestützter Kernvertrag. Die Einführungskopie gehört dem Gebietsschema, die Aktionsschaltflächen sind normale untergeordnete button_link-Elemente, die ihre eigenen Bezeichnungen und URLs besitzen, und optionale Hintergrundbilder der Medienbibliothek werden über das native Hintergrundmediengrundelement WebBlocks UI gerendert. Ältere content-Fallbacks bleiben lesbar, wenn kanonisch übersetzte Felder leer sind. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/hero.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/hero.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen Promo-Stamm <section> |
| Tests / Abdeckung | PublicHeroBlockRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Spalten — columns
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | columns |
| Bezeichnung | Spalten |
| Kategorie | content |
| Übersetzbare Felder | title, subtitle, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Geteiltes variant |
| Medien-/Beziehungsfelder | Kind-column_item-Blöcke |
| Kind-/Container-Verhalten | Container; nur column_item-Kinder |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Columns ist jetzt ein veröffentlichter, erstklassiger Block für strukturierte Inhalte. Intro-Texte sind locale-eigen, während Variante, Kindreihenfolge und Kind-URLs geteilt bleiben. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/columns.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/columns.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen strukturierten Root-content <section> |
| Tests / Abdeckung | PublicColumnsRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Spaltenelement — column_item
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | column_item |
| Bezeichnung | Spaltenelement |
| Kategorie | content |
| Übersetzbare Felder | title, eyebrow als Badge-Label, subtitle, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsam genutztes kanonisches url, settings.icon_slug, settings.icon_tone, settings.icon_size, settings.badge_tone Das Spaltenelement |
| Medien-/Beziehungsfelder | Beziehung zum übergeordneten columns |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | verwendet die mitgelieferte Komposition WebBlocks UI wb-icon-card für symbolgeführte einfache und card-Varianten. Das Gebietsschema ändert die Kopie des Aktualisierungselements, ohne freigegebene URLs, Symbol-Slug, Symbolton, Symbolgröße oder Abzeichenton zu überschreiben. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/column_item.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/column_item.blade.php |
| Renderer-Root-Vertrag | Das vom Parent bestimmte Element-Root variiert je nach Columns-Variante |
| Tests / Abdeckung | PublicColumnsRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, PublicIconBadgeSupportTest |
CTA — cta
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | cta |
| Bezeichnung | CTA |
| Kategorie | content |
| Übersetzbare Felder | title, subtitle, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsam genutzt media_id; geteilt variant; settings.background_position; settings.background_overlay |
| Medien-/Beziehungsfelder | Optionaler Hintergrund image über direktes media_id; untergeordnete button_link-Blöcke für Aktionen |
| Kind-/Container-Verhalten | Container; button_link-Kinder (Legacy-button ebenfalls zulässig), keine feste Anzahl |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | CTA ist jetzt ein veröffentlichter Promo-Vertrag mit einer gebietsschemaeigenen Kopie, Aktionsschaltflächen als gewöhnliche untergeordnete button_link-Elemente, optionalen Hintergrundbildern für die Medienbibliothek und einem öffentlichen Renderer, der dem Root-Benutzer gehört. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/cta.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/cta.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen Promo-Stamm <section> |
| Tests / Abdeckung | PublicHeroBlockRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Feature Grid — feature-grid
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | feature-grid |
| Bezeichnung | Feature Grid |
| Kategorie | content |
| Übersetzbare Felder | title, subtitle, content über Textübersetzungszeilen; Kind feature-item title, Abzeichenetikett und content |
| Geteilte/Einstellungsfelder | Gemeinsame untergeordnete Struktur, Reihenfolge, Links, Symbolblöcke, Symboltöne und Abzeichentöne |
| Medien-/Beziehungsfelder | Kind-feature-item-Blöcke mit legacy-kompatibler column_item-Unterstützung |
| Kind-/Container-Verhalten | Container; erlaubte Kinder sind feature-item und column_item |
| Aktueller Status | transitional |
| Bekannte Lücken / Hinweise | Feature Grid ist jetzt ein veröffentlichter Kompatibilitäts-Alias, da es real ausgelieferte Admin- und Render-Pfade besitzt, aber weiterhin bewusst an den Karten-Vertrag von Columns delegiert. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/feature-grid.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/feature-grid.blade.php |
| Renderer-Root-Vertrag | Delegiert an die Karten-Darstellung von Columns und verwendet weiterhin den generischen öffentlichen Wrapper |
| Tests / Abdeckung | PublicHeroBlockRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, PublicIconBadgeSupportTest |
Feature Item — feature-item
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | feature-item |
| Bezeichnung | Feature Item |
| Kategorie | content |
| Übersetzbare Felder | title, eyebrow als Badge-Label, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsames kanonisches url, settings.icon_slug, settings.icon_tone, settings.icon_size, settings.badge_tone |
| Medien-/Beziehungsfelder | Beziehung zum übergeordneten feature-grid |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | transitional |
| Bekannte Lücken / Hinweise | Feature Item ist jetzt ein veröffentlichter unterstützender untergeordneter Vertrag für Feature Grid, während die vorhandenen Column Item-Karten und das content-Symbol-Rendering weiterhin gemeinsam genutzt werden. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/feature-item.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/feature-item.blade.php |
| Renderer-Root-Vertrag | Delegiert an die Karten-Darstellung von Column Item |
| Tests / Abdeckung | PublicHeroBlockRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, PublicIconBadgeSupportTest |
Layout
Abschnitt — section
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | section |
| Bezeichnung | Abschnitt |
| Kategorie | layout |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | Gemeinsam genutzt media_id; settings.layout_name; settings.spacing; settings.background_position; settings.background_overlay |
| Medien-/Beziehungsfelder | Optionales Hintergrundbild über direktes media_id; Untergeordnete Blöcke bleiben struktureller Inhalt |
| Kind-/Container-Verhalten | Container; keine explizite Kind-Whitelist |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Block behält Abschnitt layout-orientiert bei: Gemeinsame layout-Einstellungen bleiben kanonisch, optionale Hintergrundmedien verwenden den Standard-Medienbibliotheksvertrag, besitzen das semantische <section>-Stammverzeichnis und verschieben benutzerseitige Kopien nicht in beliebige Einstellungen. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/section.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/section.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen Stamm <section> |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Container — container
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | container |
| Bezeichnung | Container |
| Kategorie | layout |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.layout_name; settings.width; settings.flow |
| Medien-/Beziehungsfelder | Nur Kind-Blöcke |
| Kind-/Container-Verhalten | Container; keine explizite Kind-Whitelist |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Container ist layout-neutral, wenn der Fluss nicht eingestellt ist oder none; Nur explizites Flow: Stack fügt vertikalen untergeordneten Fluss hinzu. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/container.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/container.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen Stamm container <div> |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Stapel — stack
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | stack |
| Bezeichnung | Stapel |
| Kategorie | layout |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.layout_name; settings.spacing |
| Medien-/Beziehungsfelder | Nur Kind-Blöcke |
| Kind-/Container-Verhalten | Container; keine explizite Kind-Whitelist |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Vertikale untergeordnete Flusszuordnungen nur für die ausgelieferten Klassen wb-stack und wb-stack-*. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/stack.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/stack.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen Stamm stack <div> |
| Tests / Abdeckung | StackSplitCatalogTest, StackSplitContractTest |
Aufgeteilt — split
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | split |
| Bezeichnung | Aufgeteilt |
| Kategorie | layout |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.layout_name; settings.gap; settings.items_alignment; settings.width |
| Medien-/Beziehungsfelder | Genau zwei direkte untergeordnete Blöcke |
| Kind-/Container-Verhalten | Container; Keine explizite Whitelist für untergeordnete Elemente, aber die Anzahl der direkten untergeordneten Elemente ist auf zwei begrenzt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Das erste direkte untergeordnete Element wächst und das zweite behält die Inhaltsgröße bei. Ein Stapel kann auf beiden Seiten verschachtelt sein. Die angeheftete Benutzeroberfläche verfügt noch über keinen reaktionsfähigen split-zu-stack-Modifikator. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/split.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/split.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen Stamm split <div> |
| Tests / Abdeckung | StackSplitCatalogTest, StackSplitContractTest |
Cluster — cluster
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | cluster |
| Bezeichnung | Cluster |
| Kategorie | layout |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.layout_name; settings.gap; settings.alignment; settings.items_alignment; settings.wrap; settings.width |
| Medien-/Beziehungsfelder | Nur Kind-Blöcke |
| Kind-/Container-Verhalten | Container; keine explizite Kind-Whitelist |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Geteilte Layout-Einstellungen bleiben explizit und rendererseitig verwaltet, einschließlich des bestehenden navbar-kompatiblen Kompositionspfads mit voller Breite, between, center und nowrap, ohne navbar-spezifische Logik hinzuzufügen. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/cluster.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/cluster.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen Stamm cluster <div> |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Grid — grid
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | grid |
| Bezeichnung | Grid |
| Kategorie | layout |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.layout_name; settings.columns; settings.gap; settings.alternate_media_text_sections; settings.alternate_start |
| Medien-/Beziehungsfelder | Nur Kind-Blöcke |
| Kind-/Container-Verhalten | Container; keine explizite Kind-Whitelist |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Gemeinsam genutzte grid-Einstellungen bleiben kanonisch. Abwechselnde Medien-/Textraster behalten den mitgelieferten wb-grid-*-Wrapper bei und ordnen direkte untergeordnete Medien-/Textpaare, einschließlich Slider- und Textabschnittsstrukturen, nach erkanntem visuellen Inhalt neu. Wechselnde Geschwistergitter unter demselben übergeordneten Element teilen sich eine Reihenfolge, auch wenn andere Blöcke dazwischen erscheinen, wobei das erste alternierende Gitter die Startrichtung steuert. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/grid.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/grid.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen Stamm grid <div> |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest |
Muster
Content Header — content_header
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | content_header |
| Bezeichnung | Content Header |
| Kategorie | pattern |
| Übersetzbare Felder | title, eyebrow als Badge-Label, subtitle, meta über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsam genutzt media_id; settings.alignment, settings.icon_slug, settings.icon_tone, settings.icon_size, settings.badge_tone, settings.background_position, settings.background_overlay |
| Medien-/Beziehungsfelder | Optionales Hintergrundbild über direktes media_id; meta wird als strukturierte Liste content gespeichert |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Content Header ist ein content-Shell-pattern-Block. Es behält das gebietsschemaeigene title, das Badge-Label, das Intro und die meta-Kopie bei, rendert sein title immer als H1, ignoriert alle veralteten gespeicherten Werte auf Überschriftenebene beim Rendern und behält die Ausrichtung, den Icon-Slug, den Icon-Ton, die Icon-Größe, den Badge-Ton und die optionalen Hintergrundmedien bei. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/content_header.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/content_header.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen Stamm <header> |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTypePhaseThreeContractsTest, BlockTranslationIntegrityTest, PublicIconBadgeSupportTest |
Alert — alert
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | alert |
| Bezeichnung | Alert |
| Kategorie | pattern |
| Übersetzbare Felder | title, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | settings.variant |
| Medien-/Beziehungsfelder | Keine |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Geteilte Variante und übersetzte Texte passen sauber zusammen. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/alert.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/alert.blade.php |
| Renderer-Root-Vertrag | Besitzt sein Alert-Root |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Navigation
Link List — link-list
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | link-list |
| Bezeichnung | Link List |
| Kategorie | navigation |
| Übersetzbare Felder | title, subtitle, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Optional settings.row_layout (Index/gestapelt) und settings.list_frame (verbunden/Karten) |
| Medien-/Beziehungsfelder | Untergeordnete link-list-item-Blöcke |
| Kind-/Container-Verhalten | Container; nur link-list-item-Kinder |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Block rendert die vorhandene übersetzte Einleitung jetzt oberhalb der öffentlichen Linkliste, ohne das Verhalten der untergeordneten Einträge zu ändern. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/link-list.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/link-list.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen Stamm .wb-link-list, wenn untergeordnete Zeilen vorhanden sind, und fügt wb-link-list--stacked und wb-link-list--cards für die ausgewählten Stile hinzu |
| Tests / Abdeckung | LinkListBlockTest, PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest, BlockTypePhaseThreeContractsTest |
Link List Item — link-list-item
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | link-list-item |
| Bezeichnung | Link List Item |
| Kategorie | navigation |
| Übersetzbare Felder | Erforderlich title, optional eyebrow als Badge-Label, optional subtitle, optional content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Erforderliches freigegebenes url, optionales freigegebenes media_id-Miniaturbild, optionales settings.icon_slug, settings.icon_tone, settings.icon_size, settings.badge_tone |
| Medien-/Beziehungsfelder | Optionale Miniaturansicht-Medien über die direkte Block-media_id-Beziehung; übergeordnete link-list-Beziehung |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Die freigegebene URL mit der übersetzten Zeilenkopie ist konsistent. Optionale Symbole verwenden aktive content-Katalog-Slugs und werden nur über sichere Symbol-, Ton- und Größenklassen gerendert. Eine optionale Bildminiaturansicht wird als wb-link-list-thumb in der einzelnen führenden Spalte der Zeile gerendert und übertrifft das Symbol, wenn beide festgelegt sind. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/link-list-item.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/link-list-item.blade.php |
| Renderer-Root-Vertrag | Besitzt den Stamm der Zeilenverknüpfung, fügt wb-link-list-item--media hinzu, wenn eine Miniaturansicht oder ein Symbol gerendert wird, und lässt das Beschreibungselement weg, wenn content leer ist |
| Tests / Abdeckung | LinkListBlockTest, LinkListThumbnailTest, PageBuilderExperienceTest, PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest, PublicIconBadgeSupportTest |
TOC — toc
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | toc |
| Bezeichnung | TOC |
| Kategorie | navigation |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | Nur kanonischer title |
| Medien-/Beziehungsfelder | Im selben Slot veröffentlichte header-Blöcke mit gültigen Ankern |
| Kind-/Container-Verhalten | Kein Container; historische Kindzeilen bleiben erhalten, aber neue Kindplatzierung wird nicht unterstützt |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | TOC ist ein Systemblocktyp. Es scannt nur den Slot, in dem es platziert ist, nicht die gesamte Seite, wird in Dokumentreihenfolge durchsucht und behandelt beliebige untergeordnete Blöcke nicht mehr als öffentliches Inhaltsverzeichnis content. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/toc.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/toc.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen generierten TOC-Wrapper, wenn Überschriften vorhanden sind |
| Tests / Abdeckung | PublicRichContentTest, PageBuilderExperienceTest, TocHeadingScanTest |
Breadcrumb — breadcrumb
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | breadcrumb |
| Bezeichnung | Breadcrumb |
| Kategorie | navigation |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | Gemeinsames settings.home_label; settings.include_current |
| Medien-/Beziehungsfelder | Breadcrumb-Kontext aus aktueller Seite, Site und Sprache (Locale) |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Block bewahrt die offengelegten Breadcrumb-Einstellungen über den gemeinsamen BlockRequest-Pfad, sodass das Formularverhalten nun mit Persistenz und Rendering übereinstimmt. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/breadcrumb.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/breadcrumb.blade.php |
| Renderer-Root-Vertrag | Besitzt das Stammverzeichnis <nav.wb-breadcrumb> |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest |
Header Actions — header-actions
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | header-actions |
| Bezeichnung | Header Actions |
| Kategorie | navigation |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | Gemeinsam genutzt settings.show_mode_toggle; settings.show_accent_toggle; settings.show_search; settings.show_language_switcher |
| Medien-/Beziehungsfelder | Suchroute plus clientseitige UI-Hooks |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | System-Utility-Block; per Design keine Übersetzungsverantwortung. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/header-actions.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/header-actions.blade.php |
| Renderer-Root-Vertrag | Besitzt nur sein inneres Aktions-Cluster |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest |
Navbar — sticky-navbar
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | sticky-navbar |
| Bezeichnung | Navbar |
| Kategorie | navigation |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.layout_name; settings.sticky_mode |
| Medien-/Beziehungsfelder | Verschachtelte untergeordnete Navbar-Blöcke |
| Kind-/Container-Verhalten | Container; zulässige Kinder sind container, cluster, header, plain_text, rich-text, button_link, navbar-brand, navbar-navigation, header-actions, search-form |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Block richtet den persistierten sticky-navbar-Slug an Block::ownsPublicRoot() aus, sodass die Navbar keinen zusätzlichen generischen öffentlichen Block-Wrapper mehr erhält. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/sticky-navbar.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/sticky-navbar.blade.php |
| Renderer-Root-Vertrag | Der öffentliche Renderer besitzt das äußere <nav.wb-navbar>-Stammverzeichnis |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PublicLayoutStructureTest, BlockTypePhaseThreeContractsTest |
Navbar Brand — navbar-brand
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | navbar-brand |
| Bezeichnung | Navbar Brand |
| Kategorie | navigation |
| Übersetzbare Felder | title, subtitle über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsame settings.url; settings.target; settings.aria_label |
| Medien-/Beziehungsfelder | Gemeinsames Logo-Medium über media_id; Fallback auf die Startseiten-URL der Site |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Block richtet das Speicherverhalten im Admin am ausgelieferten Renderer-Vertrag aus: eine explizit gespeicherte URL gewinnt, andernfalls wird, falls verfügbar, der Startseitenpfad der aktuellen Site verwendet, danach / als letzter sicherer Fallback. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/navbar-brand.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/navbar-brand.blade.php |
| Renderer-Root-Vertrag | Besitzt nur den inneren Markenlink |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTranslationIntegrityTest, BlockTypePhaseThreeContractsTest |
Navbar Navigation — navbar-navigation
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | navbar-navigation |
| Bezeichnung | Navbar Navigation |
| Kategorie | navigation |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | Canonical title als gemeinsames ARIA-Label; settings.menu_key; settings.active_indicator; settings.active_matching |
| Medien-/Beziehungsfelder | Gemeinsamer NavigationItem-Menübaum |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Gemeinsame Menübindung, ARIA-Bezeichnung, aktiver Indikator und aktiver Abgleich sind aktuelles produkteigenes Verhalten. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/navbar-navigation.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/navbar-navigation.blade.php |
| Renderer-Root-Vertrag | Besitzt nur den inneren navigation-Wrapper und ordnet aktive Indikatoreinstellungen den aktiven Navbar-Klassen WebBlocks UI zu |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest |
Sidebar Brand — sidebar-brand
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | sidebar-brand |
| Bezeichnung | Sidebar Brand |
| Kategorie | navigation |
| Übersetzbare Felder | title, subtitle über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsame settings.url; settings.target; settings.aria_label |
| Medien-/Beziehungsfelder | Gemeinsames Logo-Medium über media_id; Fallback auf die Startseiten-URL der Site |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Block gibt Sidebar Brand dieselbe Fallback-Reihenfolge für den zugänglichen Namen bei reiner Logo-Darstellung wie Navbar Brand und denselben konservativen Fallback-Vertrag für die gemeinsame URL. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/sidebar-brand.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/sidebar-brand.blade.php |
| Renderer-Root-Vertrag | Besitzt nur den inneren Markenlink |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTranslationIntegrityTest, BlockTypePhaseThreeContractsTest |
Sidebar Navigation — sidebar-navigation
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | sidebar-navigation |
| Bezeichnung | Sidebar Navigation |
| Kategorie | navigation |
| Übersetzbare Felder | title über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsame settings.menu_key; settings.layout_name; settings.show_icons; settings.active_matching |
| Medien-/Beziehungsfelder | Entweder der CMS-NavigationItem-Baum oder manuelle untergeordnete Blöcke |
| Kind-/Container-Verhalten | Container; nur sidebar-nav-item- und sidebar-nav-group-Kinder |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Sowohl die gemeinsamen Menümodus-Einstellungen als auch der manuelle Kindmodus sind explizit. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/sidebar-navigation.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/sidebar-navigation.blade.php |
| Renderer-Root-Vertrag | Besitzt das Stammverzeichnis <nav.wb-sidebar-nav> |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Sidebar Nav Item — sidebar-nav-item
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | sidebar-nav-item |
| Bezeichnung | Sidebar Nav Item |
| Kategorie | navigation |
| Übersetzbare Felder | title über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsame settings.url; settings.target; settings.icon; settings.active_mode; settings.manual_active |
| Medien-/Beziehungsfelder | Gemeinsamer Icon-Katalog-Slug; Beziehung zur übergeordneten Sidebar |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Gemeinsames Linkverhalten und übersetztes Label passen gut zusammen. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/sidebar-nav-item.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/sidebar-nav-item.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen Sidebar-Link-Root |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Sidebar Nav Group — sidebar-nav-group
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | sidebar-nav-group |
| Bezeichnung | Sidebar Nav Group |
| Kategorie | navigation |
| Übersetzbare Felder | title über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsame settings.icon; settings.initially_open; settings.layout_name |
| Medien-/Beziehungsfelder | Untergeordnete sidebar-nav-item-Blöcke; Icon-Katalog-Slug |
| Kind-/Container-Verhalten | Container; nur sidebar-nav-item-Kinder |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Block behält den ausgelieferten WebBlocks-UI-Nav-Group-Wrapper-Vertrag bei, während verschachtelte manuelle Kindlinks nun dieselbe Sidebar-Item-Semantik für href, target, Icon und Aktiv-Zustand wiederverwenden. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/sidebar-nav-group.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/sidebar-nav-group.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen .wb-nav-group-Root |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PageBuilderExperienceTest, BlockTranslationIntegrityTest, BlockTypePhaseThreeContractsTest |
Search Form — search-form
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | search-form |
| Bezeichnung | Search Form |
| Kategorie | navigation |
| Übersetzbare Felder | title, subtitle, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsame variant; settings.show_button |
| Medien-/Beziehungsfelder | Suchroute-, Site- und Sprachkontext (Locale) |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Gemeinsame Einstellungen zur Button-Anzeige und übersetzte Labels sind explizit. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/search-form.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/search-form.blade.php |
| Renderer-Root-Vertrag | Besitzt das Stammverzeichnis <form role="search"> |
| Tests / Abdeckung | SearchFormTest, PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Sidebar Footer — sidebar-footer
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | sidebar-footer |
| Bezeichnung | Sidebar Footer |
| Kategorie | navigation |
| Übersetzbare Felder | title, subtitle, content über Textübersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsame settings.variant |
| Medien-/Beziehungsfelder | Keine |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Gemeinsame Variante mit übersetztem Text ist unkompliziert. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/sidebar-footer.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/sidebar-footer.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen inneren Footer-Block-Root |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, BlockTranslationIntegrityTest |
Formulare
Contact Form — contact_form
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | contact_form |
| Bezeichnung | Contact Form |
| Kategorie | form |
| Übersetzbare Felder | title, content, submit_label, success_message über Kontaktformular-Übersetzungszeilen |
| Geteilte/Einstellungsfelder | Gemeinsame settings.recipient_email; settings.send_email_notification; settings.store_submissions |
| Medien-/Beziehungsfelder | contact_messages-Einsendungen verweisen zurück auf den Block und die Seite |
| Kind-/Container-Verhalten | Kein Container |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Der Renderer gibt ein CMS-eigenes, verstecktes, generiertes Anti-Spam-Prüffeld aus, das keine normale Besuchereingabe ist und nicht manuell erstellt werden sollte. Übermittlungen mit ausgefüllten Prüffeldern geben generischen Erfolg ohne Speicherung oder Benachrichtigung zurück. Legitime Nachrichten werden vor der Benachrichtigung gespeichert, bewerteter Spam wird zur Überprüfung durch den Administrator aufbewahrt, der Empfänger-Fallback ist „Blockieren“, „Site“, „CONTACT_RECIPIENT_EMAIL“, dann „MAIL_FROM_ADDRESS“ und auf den Kontaktseiten sollte nicht „Vertrauenswürdiges HTML/raw forms/mailto:“ als Ersatz verwendet werden. Internal Content API content-Pläne behalten submit_label und success_message bei, und die deutsche Gebietsschemawiedergabe verwendet deutsche Standardbezeichnungen form, wenn keine benutzerdefinierte Kopie vorhanden ist. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/contact_form.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/contact_form.blade.php |
| Renderer-Root-Vertrag | Besitzt seinen section.wb-card-Root und gibt ein natives, CSRF-geschütztes Formular aus, das an /contact-messages sendet |
| Tests / Abdeckung | ContactFormModuleTest, InternalContentApiTest, ContactMailDiagnoseCommandTest |
Erweitert
HTML (Trusted) — html
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | html |
| Bezeichnung | HTML (Trusted) |
| Kategorie | advanced |
| Übersetzbare Felder | Keine |
| Gemeinsame/Einstellungsfelder | Kanonischer vertrauenswürdiger HTML-content |
| Medien-/Beziehungsfelder | Öffentliche Overlay- und Body-End-Registries können extrahierte Fragmente erhalten |
| Kind-/Container-Verhalten | Kein Container; historische untergeordnete Zeilen bleiben erhalten, neue Kindplatzierung wird jedoch nicht unterstützt |
| Aktueller Status | mostly clear |
| Bekannte Lücken / Hinweise | Der Block behandelt Trusted HTML nicht mehr als öffentlichen Kind-Container-Wrapper. Vertrauenswürdiges Markup kann die gemeinsame Overlay- oder Body-End-Ausgabe jenseits des sichtbaren Roots weiterhin beeinflussen. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/html.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/html.blade.php |
| Renderer-Root-Vertrag | Umschließt vertrauenswürdiges Markup mit einem <div> und kann zusätzlich Overlay- oder Body-End-Inhalte außerhalb dieser Wurzel ausgeben. |
| Tests / Abdeckung | PublicEditorialBlocksRenderingTest, PublicRichContentTest, PageBuilderExperienceTest |
Zusätzliche veröffentlichte Verträge
Schieberegler — slider
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | slider |
| Bezeichnung | Schieberegler |
| Kategorie | layout |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.layout_name; settings.height; settings.min_height; settings.aspect_ratio; settings.transition; settings.interval_ms; settings.autoplay; settings.pause_on_hover; settings.show_arrows; settings.show_dots; settings.loop; settings.swipe; settings.keyboard; settings.overlay; settings.content_position; settings.content_width; settings.text_color; settings.background_fit |
| Medien-/Beziehungsfelder | Untergeordnete slide-Blöcke sind die primäre Beziehung. Slider selbst unterstützt keinen direkten Medieneigentum. |
| Kind-/Container-Verhalten | Containerfähig. Der zulässige untergeordnete Typ ist slide. |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Keine |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/slider.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/slider.blade.php |
| Renderer-Root-Vertrag | Besitzt den öffentlichen <section data-wb-slider>-Root, die interne Spur, die Steuerelemente und den Punkt navigation. |
| Tests / Abdeckung | SliderContentPositionTest |
Folie — slide
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | slide |
| Bezeichnung | Folie |
| Kategorie | layout |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | media_id; settings.layout_name; settings.aria_label; settings.background_position; settings.background_overlay; settings.content_position; settings.content_width; settings.text_color; settings.background_fit; mobile_media_id |
| Medien-/Beziehungsfelder | Das optionale Hintergrundmedium slide ist über die direkte Blockbeziehung media_id im Besitz. Untergeordnete Blöcke sind die sichtbare content-Beziehung.; mobile_media_id weist einen Bildmedienbibliothekseintrag über block_media.mobile_image zu. Senden Sie null an clear zur Überschreibung. |
| Kind-/Container-Verhalten | Containerfähig. Untergeordnete Typen sind im aktuellen Hilfsprogramm nicht explizit eingeschränkt. |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Keine |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/slide.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/slide.blade.php |
| Renderer-Root-Vertrag | besitzt sein öffentliches Stammverzeichnis <article class="wb-slide"> und delegiert sichtbare Kopien/Benutzeroberflächen an verschachtelte untergeordnete Blöcke. Bei Ansichtsfensterbreiten von bis zu 768 Pixel überschreibt ein öffentliches mobiles Bild das Standardbild durch Bild/Quelle oder das Hintergrundbild; Fehlende oder nicht verfügbare Überschreibungen verwenden das Standardbild. |
| Tests / Abdeckung | SliderContentPositionTest |
Navigation Auto — navigation-auto
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | navigation-auto |
| Bezeichnung | Navigation Auto |
| Kategorie | navigation |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.menu_key |
| Medien-/Beziehungsfelder | Der aktuelle Site- und Gebietsschemakontext löst die gerenderte Menüstruktur zum Zeitpunkt des Renderns auf. |
| Kind-/Container-Verhalten | Kein Container. Menüelemente stammen aus Navigationsdatensätzen, nicht aus untergeordneten Blöcken. |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Keine |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/navigation-auto.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/navigation-auto.blade.php |
| Renderer-Root-Vertrag | Besitzt sein öffentliches <nav class="wb-stack wb-gap-2" data-wb-menu-key="...">-Stammverzeichnis und stellt den sichtbaren Menübaum als verschachtelte <ul>-Listen von wb-link-Ankern dar. |
| Tests / Abdeckung | ManagedCtaApiTest |
Bewertung — rating
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | rating |
| Bezeichnung | Bewertung |
| Kategorie | system |
| Übersetzbare Felder | Titel; Untertitel |
| Geteilte/Einstellungsfelder | settings.scale; settings.allow_change; settings.show_summary; settings.data_scope |
| Medien-/Beziehungsfelder | Aktuelle Seite, Site, Block, Besucher-Hash und Quell-URL werden in rating-Zeilen aufgezeichnet. |
| Kind-/Container-Verhalten | Kein Container im aktuellen Vertrag. |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Keine |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/rating.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/rating.blade.php |
| Renderer-Root-Vertrag | Besitzt sein öffentliches section.wb-card.wb-rating-Stammverzeichnis, rendert eine optionale lokalisierte Titel-/Untertitelkopie, einen schreibgeschützten wb-rating-stars-Durchschnitt und ein wb-rating-input-Sternformular ohne JS, das jeden Beitrag an /content-ratings sendet. |
| Tests / Abdeckung | EngagementManagementTest |
Kommentare — comments
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | comments |
| Bezeichnung | Kommentare |
| Kategorie | system |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.form_enabled; settings.show_approved; settings.show_author_name; settings.sort_order; settings.data_scope |
| Medien-/Beziehungsfelder | Aktuelle Seite, Site, Block, Besucher-Hash und Quell-URL werden in Kommentarzeilen aufgezeichnet. |
| Kind-/Container-Verhalten | Kein Container im aktuellen Vertrag. |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Keine |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/comments.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/comments.blade.php |
| Renderer-Root-Vertrag | Besitzt sein öffentliches Stammverzeichnis section.wb-card, gibt genehmigtes comments wieder und gibt ein natives CSRF-geschütztes Kommentarformular aus, das an /comment-entries postet. |
| Tests / Abdeckung | EngagementManagementTest |
Seitenliste — page-list
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | page-list |
| Bezeichnung | Seitenliste |
| Kategorie | content |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.scope; settings.page_type; settings.path_prefix; settings.sort; settings.limit; settings.layout; settings.columns; settings.show_thumbnail; settings.show_description; settings.exclude_current; settings.clickable_card |
| Medien-/Beziehungsfelder | Kein Blockmedium. Miniaturansichten werden aus jeder aufgelisteten Seitenübersetzung zum Zeitpunkt des Renderns aufgelöst. |
| Kind-/Container-Verhalten | Kein Container. Zeilen stammen aus einer Seitenabfrage, nicht aus untergeordneten Blöcken. |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Kartenbeschreibungen und Miniaturansichten verwenden die SEO-Beschreibung und das Open Graph-Bild wieder, die für die Suche und soziale Netzwerke und nicht für eine Karte erstellt wurden. Dedizierte Seiteneinstellungen list_excerpt und list_image sind geplant. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/page-list.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/page-list.blade.php |
| Renderer-Root-Vertrag | besitzt seinen öffentlichen Stamm: ein wb-grid mit wb-card-Artikeln oder Ganzkartenankern in den Karten layout oder ein wb-link-list mit wb-link-list-item-Ankern in den Links layout. Rendert nichts, wenn die Abfrage keine Seiten zurückgibt. |
| Tests / Abdeckung | PageListBlockRenderTest |
Anwendung — application
Inhalt und Verhalten
| Feld | Vertrag |
|---|---|
| Slug | application |
| Bezeichnung | Anwendung |
| Kategorie | content |
| Übersetzbare Felder | Keine |
| Geteilte/Einstellungsfelder | settings.application_handle; settings.application_settings; settings.width; settings.loading; settings.aspect_ratio; settings.min_height; settings.show_loading_state; settings.show_failure_state |
| Medien-/Beziehungsfelder | Keine direkte CMS-Medienbeziehung. Ausführbare application-Assets sind Dateien im Besitz der Registrierung, keine redaktionellen Medien. |
| Kind-/Container-Verhalten | Kein Container. Die application-Laufzeit besitzt ihr internes DOM. |
| Aktueller Status | clear |
| Bekannte Lücken / Hinweise | Anwendungscode- und Registrierungsverwaltung bleiben von der redaktionellen Platzierung getrennt; Der Block wählt eine aktivierte Definition aus und validiert ihre Einstellungen. |
Quellen und Tests
| Quelle | Vertrag |
|---|---|
| Quelle des Admin-Formulars | resources/views/admin/blocks/types/application.blade.php |
| Quelle des öffentlichen Renderers | resources/views/pages/partials/blocks/application.blade.php |
| Renderer-Root-Vertrag | Besitzt einen .wb-application-Root. Inline-Definitionen erhalten ein sicheres Mount-Element; Iframe-Definitionen erhalten einen CMS-eigenen Iframe-Wrapper. Fehlende oder ungültige Definitionen beeinträchtigen niemals die umgebende Seite. |
| Tests / Abdeckung | EmbeddedApplicationsTest |
Überblick über Validierung und Persistenz
Veröffentlichte Blocktypen haben heute nicht alle ihre eigene dedizierte Anforderungsklasse.
WebBlocks\Cms\Http\Requests\Admin\BlockRequestist der Pfad der gemeinsamen Bearbeitungsanforderung- Slug-spezifische Zweige innerhalb dieser Anforderung normalisieren Felder im aktuellen kanonischen Speicher
WebBlocks\Cms\Support\Blocks\BlockPayloadWriterBehält die normalisierte Blocknutzlast beiWebBlocks\Cms\Support\Blocks\BlockTranslationWriterverschiebt gebietsschemaeigene Felder in Übersetzungszeilen für registrierte FamilienWebBlocks\Cms\Support\Blocks\BlockTranslationResolverLöst übersetzte oder Fallback-Werte zurück auf eine renderbare Blockinstanz
Kompatibilitätsverhalten
Legacy-Einstellungen von Gallery und Table können bei fehlenden kanonischen Übersetzungen oder geordneten Medien lesbar bleiben. Historische Fallbacks sind kein bevorzugtes Authoring-Format. Nutzen Sie die aktuelle Blockmatrix.
Entwurfszeilen und reine Renderer-Kompatibilitätshandles sind keine veröffentlichten Kernverträge. Discovery und schreibgeschützter Vertragsdialog können für sie keinen ausgelieferten Vertrag melden.
Medien- und Editor-Ergänzungen bis 1.94.2
Ab CMS 1.91.0 unterstützen Folie, Bild, Held, Abschnitt, Karte, CTA, Inhaltskopfzeile und Linklistenelement optionales mobile_media_id in Plänen und Aktualisierungen vorhandener Blöcke. Die Beziehung verwendet block_media.role = mobile_image, wird länderübergreifend gemeinsam genutzt und ersetzt das Standardbild mit bis zu 768 Pixeln durch ein Fallback, wenn es nicht verfügbar ist. Es werden keine separaten Alternativtexte oder Untertitel für Mobilgeräte eingeführt. Siehe Medienbildvarianten.
Ab 1.91.1 bieten Slide und Slider neun Inhaltspositionen: Mitte, Mitte-Links, Mitte-Rechts, Oben-Links, Oben-Mitte, Oben-Rechts, Unten-Links, Unten-Mitte und Unten-Rechts. Diese Werte werden vom Administrator, der API und dem Renderer geteilt.
Ab 1.93.0 verfügt der Rich-Text-Editor über Rückgängigmachen/Wiederherstellen pro Feld, Auswahlwiederherstellung, Fokusmodus und Wortanzahl. Eingefügte Überschriften und Tabellenzellentext bleiben als sichere Textabsätze erhalten; semantische Überschriften, Tabellen und Medien gehören in eigene Blöcke. Dadurch wird keine neue gespeicherte Rich-Text-Variante hinzugefügt und kein ausführbares Markup zugelassen. Siehe Rich Text.