Dynamische Inhalte: Quellen, Schleifen und Feldzuordnungen
Dynamische Inhalte verbinden Datensätze eines aktivierten Anbieters mit gewöhnlichen CMS-Blöcken. Daten und Übersetzungen gehören dem Anbieter; Seitenlayout, wiederholte Vorlage und Feldzuordnungen verwalten Sie. Diese Anleitung beschreibt den Panel-Ablauf in CMS 1.104.0 mit Quellenstandard 1.0. Als Beispiel dient der veröffentlichte Plugin-Katalog.
Sie richten diese Verbindungen im Panel ein, ohne API-Anfragen zu schreiben oder Block-IDs einzugeben. API-Zugriff und Zugangsdaten gehören zur installierten Anbieterintegration; dieser Arbeitsbereich wählt deren bereits registrierte Quellen aus.
Quelle und Verwendungen finden
Öffnen Sie Dynamische Inhalte → Quellen. Die Quelldetails zeigen Anbieter, deklarierte Datenherkunft, Sammlung oder Einzeldatensatz, unterstützte Sprachen, stabilen Datensatzschlüssel und verfügbare Felder. Eine Sprachdeklaration beschreibt einen Vertrag; sie bestätigt keine erfolgreiche Live-Verbindung.
Wiederholungen, Feldverknüpfungen und Probleme zeigen die Verwendungen. Filtern Sie nach Website, Veröffentlichungsstatus oder Suchbegriff. Die Zahlen bezeichnen gespeicherte Blöcke und Verbindungen, nicht erzeugte Karten. Das Inventar liest Konfiguration, ohne entfernte Inhalte anzufordern. Verwendungen in Shared Slots führen zum vorhandenen Editor; der folgende geführte Ablauf verwendet seiteneigene Slots.
Die Beispielintegration stellt drei unterschiedliche Quellen bereit:
- Published plugin catalog (
webblocks-extensions-live::plugins): eine Sammlung für wiederholte Karten. - Published plugin (
webblocks-extensions-live::plugin): ein ausgewähltes Plugin, etwa als fester Datensatz. - Catalog interface (
webblocks-extensions-live::ui): der Datensatzlabelsliefert gemeinsame übersetzte Oberflächentexte.
Diese Anbieterbezeichnungen können auch im übersetzten Panel englisch bleiben. Die Inhalte der Quelldatensätze verwenden die angeforderte Sprache.
Eine Quelle mit einer Seite verbinden
Wählen Sie in den Quelldetails Auf einer Seite verwenden. Wählen Sie Website und Seite, dann Ziel laden. Für die Katalogsammlung wählen Sie Grid als Block mit der Schleife. Laden Sie dieses Ziel und wählen Sie dessen direktes Kind Card als wiederholte Vorlage.
Auf einer veröffentlichten Seite können Sie Verbindungen sofort prüfen und voranzeigen. Wählen Sie vor dem Speichern Änderungsentwurf vorbereiten und anschließend das Ziel in diesem Entwurf. Geklonte Blöcke besitzen eigene IDs; verwenden Sie die sichtbaren Auswahlfelder und prüfen Sie die Zuordnungen. Die veröffentlichte Seite bleibt unverändert.
Fehlt einem Entwurf eine geeignete Vorlage, fügt Startraster und Karte erstellen einem seiteneigenen Slot eine unverbundene Vorlage hinzu. Vorhandene Blöcke bleiben erhalten; Feldzuordnungen müssen Sie selbst auswählen. Anbieterinstallation, Quellzugriff und API-Zugangsdaten werden in der Integration konfiguriert, nicht hier. Zur Installation siehe Plugin-System.
Schleife und wiederholte Vorlage wählen
Die Schleife gehört zum Grid; die Card wird je passendem Datensatz einmal wiederholt. Image, Header, Plain Text und Button Link innerhalb der Card erhalten den aktuellen Datensatz. Ein fester Header neben der Card bleibt redaktionell und kann nicht den aktuellen Datensatz dieser Schleife verwenden.
Der Blockbaum kennzeichnet Schleifenbesitzer, wiederholte Vorlage und verbundene Felder. Eingeklappte Vorfahren zeigen enthaltene dynamische Inhalte an. Folgen Sie einer Kennzeichnung zur Schleife oder Zuordnung. Eine gespeicherte Card kann so zehn öffentliche Karten erzeugen, ohne zehn bearbeitbare Card-Kopien.
Wählen Sie ein kompatibles direktes Kind, kein Enkelkind oder einen Block einer anderen Seite. Section, Container, Stack, Cluster, Grid und Slide akzeptieren ansonsten gültige Kindvorlagen; Slider benötigt Slide, Columns benötigt Column Item, Feature Grid benötigt Feature Item oder Column Item, Link List benötigt Link List Item. Card und Split bieten diese Fähigkeit als Sammlungskontainer nicht an.
Section
└─ Container
└─ Grid [loop: Published plugin catalog]
├─ Header [fixed editorial block]
└─ Card [repeated template]
├─ Image
├─ Header
├─ Plain Text
└─ Button Link
Filter, Sortierung und Seiteneinteilung festlegen
Setzen Sie im Katalogbeispiel Maximale Datensätze auf 50, Sortierfeld auf title, die Richtung auf aufsteigend und Datensätze pro Seite auf 12; aktivieren Sie Datensätze aufteilen. Fünfzig ist die Auflösungsgrenze und bedeutet nicht, dass fünfzig Datensätze vorhanden sind. Zehn Treffer bei zwölf pro Seite ergeben eine Vorschauseite. Slider unterstützt diese Seiteneinteilung nicht.
Filtern Sie nur nach deklarierten Quellfeldern. Published plugin catalog wählt bereits beim Anbieter veröffentlichte Plugins aus; erfinden Sie kein Feld status und pflegen Sie keinen zweiten Veröffentlichungsfilter im CMS. Wählen Sie für Bei leerem Ergebnis und Bei Quellfehler getrennt, ob die Vorlage ausgeblendet oder ihre redaktionelle Fassung beibehalten wird. Prüfen Sie beides vor Veröffentlichung.
Bei kleinen Sammlungen filtert und sortiert CMS die gelieferten Datensätze. Abfragefähige Anbieter führen die Abfrage selbst aus. Die Quelldetails zeigen das verwendete Modell.
Felder dem aktuellen Datensatz, festen Datensatz oder redaktionellen Wert zuordnen
Wählen Sie unter Feldzuordnungen der Vorlage für jedes Zielfeld einen Wertmodus:
- Aktueller Schleifendatensatz: Werte ändern sich je Karte. Wählen Sie Sammlung und kompatibles Feld; der Datensatz ist das aktuelle Element.
- Fester Quelldatensatz: alle Karten können denselben Datensatzwert verwenden. Wählen Sie Quelle, Datensatz und anschließend kompatibles Feld.
- Redaktioneller Wert / Ersatz: verwendet den im Block eingetragenen Text oder das Medium. Liefert eine Verbindung keinen nutzbaren Wert, kann dieser redaktionelle Wert auch als Ersatz dienen.
Verbinden Sie beispielsweise den Header-Titel mit title, den Plain-Text-Inhalt mit summary und die Button-Link-URL mit url des aktuellen Schleifendatensatzes. Für die Schaltflächenbeschriftung verwenden Sie die feste Quelle Catalog interface, Datensatz labels, Feld explore. Quelle, Datensatz und Feld haben getrennte Auswahlfelder; Datensätze und Felder suchen grenzt die Auswahl ein.
Verbundene Blöcke besitzen außerdem einen eigenen Tab Dynamische Inhalte. Ihre gewöhnlichen Blockfelder enthalten redaktionelle Ersatzwerte. Ein Textfeld kann kein ausschließliches URL-Feld wählen; aktuelle Datensatzfelder sind auf den gewählten Vorlagenzweig begrenzt. Vor dem Ändern oder Entfernen einer Schleife müssen betroffene Zuordnungen angepasst werden; die Validierung lehnt verwaiste oder inkompatible Verbindungen ab.
Bild, Alternativtext, Bildunterschrift und Link getrennt verbinden
Die Quelle liefert eine erreichbare Bild-URL oder eine Medienreferenz dieser CMS-Installation. Eine numerische Bild-ID einer entfernten Anwendung ist nicht automatisch eine CMS-Medien-ID. CMS stellt das Bild mit dem gewöhnlichen Image-Block dar; die Grafik wird nicht in jede Card kopiert.
Verwenden Sie für den Katalog-Image-Block vier unabhängige Verbindungen:
- Bildquelle →
image_urldes aktuellen Datensatzes. - Alternativtext →
image_alt. - Optionale Bildunterschrift →
image_caption. - Link →
url.
Die Datei kann sprachübergreifend gleich sein, während Alternativtexte und Bildunterschriften wechseln. Alternativtext beschreibt relevante Bildinformationen; die Bildunterschrift ergänzt optional sichtbaren Kontext. Kopieren Sie nicht den einen Text in den anderen. In der API bezeichnet Image subtitle den Alternativtext und Image title die Bildunterschrift. Prüfen Sie Bildladung und Eignung beider Texte; der Typ URL beweist nicht, dass die Adresse auf ein Bild zeigt.
Übersetzungen vom Anbieter beziehen
Standard 1.0 verlangt von jeder Anbieterquelle alle sechs CMS-Sprachen: en, tr, de, es, it und fr, auch wenn eine Website weniger Sprachen aktiviert hat. CMS fordert die aktivierte Sprache der aktuellen Website an; der Anbieter liefert passende Datensatztexte, Bildalternativtexte, Bildunterschriften und gemeinsame Beschriftungen. Sie übersetzen nicht jede erzeugte Karte im CMS-Seiteneditor.
Dieselbe Katalog-Card verwendet beispielsweise summary auf Englisch und dessen anbieterseitige türkische Übersetzung bei angeforderter Sprache tr. Die Schaltflächenbeschriftung stammt aus Catalog interface / labels / explore in derselben Sprache. Die Bilddatei kann gleich bleiben.
Feste redaktionelle Bereiche um die Schleife verwenden weiterhin gewöhnliche Seiten- und Blockübersetzungen. Die Quellvalidierung prüft Sprachmarker, stabile Schlüssel und Feldtypen, nicht die Übersetzungsqualität. Prüfen Sie jede aktivierte Sprache in der Vorschau anhand der tatsächlichen Texte. Anbieter dürfen unverändertes Englisch nicht als andere Sprache kennzeichnen.
Die konfigurierte Vorschau vor dem Speichern prüfen
Wählen Sie Vorschausprache, dann Quelle prüfen und Vorschau. Eine private Vorschau im neuen Tab rendert die tatsächliche Blockvorlage mit aktuellen ungespeicherten Zuordnungen, Filter, Sortierung, Grenze und Seiteneinteilung. Sie speichert und veröffentlicht die Seite nicht. Das bloße Öffnen der Quelldetails führt diese Prüfung nicht aus.
Prüfen Sie Datensatzanzahl, Titel, Zusammenfassungen, Schaltflächenbeschriftungen und Ziele. Kontrollieren Sie geladene Bilder, übersetzte Alternativtexte und Bildunterschriften. Unterscheiden Sie ein gültiges leeres Ergebnis von verweigertem Zugriff, einer vertragswidrigen Antwort oder einem nicht erreichbaren Anbieter. Die Vorschau meldet diese Zustände getrennt. Prüfen Sie bei Bedarf Anbieterzugriff und Einstellungen; ersetzen Sie fehlende Daten nicht durch vermutete Übersetzungen.
Erzeugen Sie nach Einstellungsänderungen eine neue Vorschau. Wechseln Sie bei Seiteneinteilung zwischen den Fenstern, um das konfigurierte Ergebnis zu prüfen. Ein rohes API-Beispiel hilft bei der Diagnose, ersetzt aber nicht die vollständige visuelle Vorschau Ihrer Card.
Entwurf speichern und Veröffentlichung separat prüfen
Entwurfsverbindungen speichern aktualisiert nur den Entwurf und legt eine Revision an. Wurde die Seite seit dem Öffnen geändert, laden Sie sie vor dem Speichern neu und prüfen Sie sie. Ungültige Konfiguration lässt bisherige Einstellungen bestehen. Prüfen Sie den gerenderten Entwurf erneut in allen aktivierten Sprachen und verwenden Sie den normalen redaktionellen Ablauf für Veröffentlichung oder Entwurfsübernahme.
Eine Sammlung wiederholt Blöcke innerhalb einer vorhandenen Seite. Das Detailziel einer Karte muss bereits existieren oder durch eine separat konfigurierte Regel für Automatische Seiten bereitgestellt werden. Die Schleifenverbindung erstellt oder aktiviert diese Regel nicht. Der Anbieter veröffentlichter Plugins bestimmt die verfügbaren Datensätze; CMS sollte keine zweite manuelle Katalogkopie führen.
Entwicklerreferenz: Quellenstandard und Einzelvertrag
Ein aktiviertes Plugin registriert Quellen mit PluginDefinition::contentSources(...). Ein Entity-Resolver implementiert ContentSourceResolver: options() liefert sichere lesbare Datensatzauswahlen mit stabilen Identitäten als Schlüsseln; resolve() liefert einen Datensatz für Website, Seite, Sprache und Vorschaukontext. Ein Sammlungsresolver implementiert ContentCollectionSourceResolver; große Sammlungen können QueryableContentCollectionSourceResolver mit ContentCollectionQuery und ContentCollectionResult für Abfragen, Gesamtzahlen und Seitenfenster implementieren.
Die folgende Deklaration gehört zur Anbieterintegration, nicht zum Seiteneditor. Jeder aufgelöste Datensatz muss _locale entsprechend der angeforderten Sprache, einen durch recordKey deklarierten nichtleeren Zeichenkettenschlüssel und alle deklarierten Felder enthalten. Verwenden Sie null für nicht verfügbare Feldwerte; Sammlungsschlüssel müssen eindeutig sein. Feldtypen sind text, rich_text, url oder media. Ein media-Wert ist eine positive CMS-Medien-ID; alle anderen Werte außer null sind Zeichenketten. URL-Werte müssen den URL-Vertrag der Quelle erfüllen.
ContentSourceDefinition::collection('catalog::items')
->label('Catalog items')
->resolver(CatalogItems::class)
->standard(
locales: ['en', 'de', 'tr', 'es', 'it', 'fr'],
description: 'Localized catalog records.',
origin: 'Catalog application',
recordKey: 'id',
)
->fields([
'id' => ['type' => 'text', 'label' => 'Record ID'],
'title' => ['type' => 'text', 'label' => 'Title'],
'image_url' => ['type' => 'url', 'label' => 'Image'],
'image_alt' => ['type' => 'text', 'label' => 'Alternative text'],
'image_caption' => ['type' => 'text', 'label' => 'Caption'],
]);
Unversionierte Quellen werden als Legacy — Standardaktualisierung nötig markiert. Vorhandene Auswahlen dürfen unverändert bleiben; neue Verbindungen benötigen den mehrsprachigen Standard. Anbieter besitzen ihre Tabellen und Datensätze, CMS besitzt Layout und Rendering. Plugin-Kontainer aktivieren die Fähigkeit mit contentCollectionTemplate() und rendern aufgelöste Kinder über ContentCollectionRenderer::children($block); Manifestdeklarationen verwenden content_collection.enabled und optional content_collection.child_types. Plugins sollten die vorhandenen Card-, Grid- und Image-Renderer wiederverwenden.
Entwicklerreferenz: Zugriff, Cache und Ersatzwerte
Verbinden Sie eingeschränkte Datensätze über accessPolicy(...) mit einer ContentSourceAccessPolicy; CMS prüft Website, Seite, Sprache, Vorschauzustand und angemeldeten Akteur vor der Auflösung. Entity-Fehler und leere Werte behalten den redaktionellen Feldersatz. Leere Sammlungsergebnisse und Resolverfehler werden getrennt behandelt; verweigerte oder entfernte Quellen behalten den gespeicherten Baum. Probleme und Blockkontrollen zeigen nicht verfügbare Verbindungen, ohne sie still zu löschen.
cacheFor($seconds) aktiviert begrenztes Ergebnis-Caching; der Standardwert null Sekunden deaktiviert es. Schlüssel enthalten Quelle, Website, Seite, Sprache, Datensatz-/Abfrageargumente und Quelleinstellungen. Die Vorschau umgeht diesen Cache. Rufen Sie nach einer Domänenänderung app(ContentSourceRuntime::class)->invalidate('plugin-handle::source') auf, um die Cachevarianten der Quelle zu verwerfen. Seitenduplikation, Revisionen und Website-Export/Import erhalten Verbindungen und Sammlungskonfiguration; ausgeführte Anbieterergebnisse gelangen nicht in diese Pakete.
Entwicklerreferenz: Internal Content API
GET /webadmin/api/content-sources ermittelt zugängliche aktivierte Quellen. Mit block_id prüfen Sie kompatible Ziele und Sammlungsfähigkeit. POST /webadmin/api/content-sources/{source}/preview löst einen gewählten Entity-Datensatz oder höchstens fünf Sammlungsbeispiele auf und gibt nur deklarierte Felder aus. Dieser Beispielendpunkt rendert nicht die vollständige konfigurierte Vorlage.
PATCH /webadmin/api/blocks/{block} akzeptiert content_bindings und content_collection auf oberster Ebene oder unter settings. Jedes Objekt ersetzt seine entsprechende Konfiguration; null löscht sie. Validiert werden Zugriff, Datensatzauswahl, Feldtypen, direkte Kindeigentümerschaft und Vorlagenfähigkeit. Ungültige Anfragen liefern 422 invalid_content_source_configuration. Verwenden Sie einen eigenen Entwurf oder Änderungsentwurf und rendern Sie anschließend das Ergebnis; beachten Sie die Autorisierungs- und Veröffentlichungsregeln der Internal Content API. Image subtitle und title behalten ihre getrennte Bedeutung für Alternativtext und Bildunterschrift.