Liste aller TYPO3-Seiten
Die Werkstatt fragt eine TYPO3-API: GET /api/cms/pages — bekommt alle pflegbaren Seiten mit Titel, ID, Kategorie. Im Maintenance-Mode-Dialog der Werkstatt waehlst du eine.
Wie der Maintenance-Mode der Werkstatt aussehen soll: bestehende TYPO3-Seiten laden, in der Werkstatt ändern, zurueckschreiben. Diese Seite zeigt die Idee mit Mock-Daten — die echte Bridge braucht eine TYPO3-API.
Die Werkstatt fragt eine TYPO3-API: GET /api/cms/pages — bekommt alle pflegbaren Seiten mit Titel, ID, Kategorie. Im Maintenance-Mode-Dialog der Werkstatt waehlst du eine.
Die TYPO3-API gibt pro Seite eine Liste von Content-Elementen zurück. Ein Mapping-Layer wandelt sie in Werkstatt-Block-Nodes um — basierend auf dem CType-Feld:
// CE-Typ → Werkstatt-Block-Typ Mapping
const CTYPE_TO_BLOCK = {
'cp_hero': 'hero',
'cp_cards': 'cards',
'cp_teaser': 'teaser',
'cp_quote': 'quote',
'cp_faq': 'faq',
'cp_text': 'text',
'cp_alert': 'alert',
// …
};
// Felder lesen aus tt_content / Custom-Tabellen
function ceToBlock(ce) {
return {
id: 'tt_content_' + ce.uid,
type: CTYPE_TO_BLOCK[ce.CType],
controls: { spacing: ce.tx_cp_spacing, width: ce.tx_cp_width },
content: extractContent(ce),
};
} Editor sieht den aktuellen Stand der TYPO3-Seite als Werkstatt-Konfig. Ändert Texte, verschiebt Blöcke, prüft Mobile. Status-Anzeige im Toolbar: "Verbunden mit TYPO3-Seite #42".
Klick auf "Änderungen veröffentlichen" → die Werkstatt-Konfig wird zurück-gemappt zu CE-Datensätzen. Die TYPO3-API erhält: hinzufügen, ändern, löschen, neu sortieren. Pro CE ein Datenbank-Update.
POST /api/cms/pages/42/sync
{
"blocks": [
{ "type": "hero", "tt_content_uid": 1234, "content": {...} },
{ "type": "cards", "tt_content_uid": 1235, "content": {...} },
{ "type": "quote", "tt_content_uid": null, "content": {...} }, // neu
],
"removed": [1240] // Quelle gibt mit, welche CEs zu löschen sind
} Damit die Bridge läuft, braucht TYPO3 zwei Bausteine — beides ist überschaubar (~1-2 Tage Backend-Arbeit):
typo3/cms-extbase mit Routen /api/cms/pages, /api/cms/pages/{id} (GET/POST/PUT). JWT-Auth für Editor-Login.