fix(content): Rechtsseiten liefern wieder Text #97

Merged
Phil merged 1 commit from fix/doppelt-kodierter-inhalt into main 2026-09-07 09:25:49 +00:00
Owner

Refs #83

Was passiert ist

Drei meiner Migrationen von heute haben Blockinhalte als fertigen JSON-Text in
die Datenbank geschrieben. Die Spalte ist aber selbst vom Typ JSON, die
Datenbankschicht verpackt den Wert also ein zweites Mal. Craft liest aus so
einem doppelt verpackten Wert nichts mehr.

Sichtbar wurde es nach dem Deploy von #96: /datenschutz und /impressum
lieferten in beiden Sprachen nur noch den Seitenrahmen, der eigentliche Text
war weg. Von 34 KB auf 9,7 KB.

Betroffen sind genau zehn Zeilen, alle aus denselben drei Migrationen. Der Inhalt
war nie verloren, nur einmal zu viel verpackt.

Der Fix

Ein Array übergeben und das Verpacken der Spalte überlassen. Die Migration sucht
die betroffenen Zeilen selbst, statt IDs zu raten: betroffen ist jede, deren
Inhalt sich zu einem Text statt zu einem Objekt auspacken lässt. Damit greift sie
auch, falls noch eine Stelle übersehen wurde.

Gemessen

Lokal: null doppelt verpackte Zeilen mehr, die englische Startseite liefert
wieder ihre Produktsektion. Nach dem Deploy wird der Umfang der vier Rechtsseiten
live gegengemessen.

🤖 Generated with Claude Code

https://claude.ai/code/session_01VyiQJ8BM3hcqH3E3sPvg1N

Refs #83 ## Was passiert ist Drei meiner Migrationen von heute haben Blockinhalte als fertigen JSON-Text in die Datenbank geschrieben. Die Spalte ist aber selbst vom Typ JSON, die Datenbankschicht verpackt den Wert also ein zweites Mal. Craft liest aus so einem doppelt verpackten Wert nichts mehr. Sichtbar wurde es nach dem Deploy von #96: `/datenschutz` und `/impressum` lieferten in **beiden** Sprachen nur noch den Seitenrahmen, der eigentliche Text war weg. Von 34 KB auf 9,7 KB. Betroffen sind genau zehn Zeilen, alle aus denselben drei Migrationen. Der Inhalt war nie verloren, nur einmal zu viel verpackt. ## Der Fix Ein Array übergeben und das Verpacken der Spalte überlassen. Die Migration sucht die betroffenen Zeilen selbst, statt IDs zu raten: betroffen ist jede, deren Inhalt sich zu einem Text statt zu einem Objekt auspacken lässt. Damit greift sie auch, falls noch eine Stelle übersehen wurde. ## Gemessen Lokal: null doppelt verpackte Zeilen mehr, die englische Startseite liefert wieder ihre Produktsektion. Nach dem Deploy wird der Umfang der vier Rechtsseiten live gegengemessen. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01VyiQJ8BM3hcqH3E3sPvg1N
Drei Migrationen von heute haben elements_sites.content als fertigen
JSON-String geschrieben. Die Spalte ist aber vom Typ JSON, Yii kodiert den
uebergebenen Wert noch einmal. Heraus kam ein JSON-String, der einen
JSON-String enthaelt, und Craft liest daraus nichts mehr.

Sichtbar wurde es an den Rechtsseiten: /datenschutz und /impressum lieferten
in beiden Sprachen nur noch den Seitenrahmen ohne Text. Betroffen waren zehn
Zeilen, alle aus denselben drei Migrationen.

Richtig ist, ein Array zu uebergeben und die Kodierung der Spalte zu
ueberlassen. Die Migration sucht die betroffenen Zeilen selbst, statt IDs zu
raten: betroffen ist jede, deren Inhalt sich zu einem String statt zu einem
Objekt dekodiert.

Refs #83

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VyiQJ8BM3hcqH3E3sPvg1N
Phil merged commit eb1ddfcb3b into main 2026-09-07 09:25:49 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Phil/philflow.io!97
No description provided.