
T3ppy gibt TYPO3 ein freundliches Gesicht
TYPO3 ist leistungsstark — muss sich aber nicht unpersönlich anfühlen. Das ist T3ppy, unser freundlicher Begleiter fürs Backend.
weiterlesen: T3ppy gibt TYPO3 ein freundliches Gesicht
In diesem Blogbeitrag wird das Konzept des „Overlays“-Mechanismus in TYPO3 erklärt, mit einigen detaillierten Einblicken, wie die TYPO3 Core Engine mit dieser Funktion unter der Haube umgeht.
Overlays werden in zwei wichtigen Funktionen von TYPO3 verwendet:
Beginnen wir mit einem einfachen Beispiel: eine Website auf Englisch, ohne Übersetzungen und ohne Workspaces. Ein Inhaltselement (Datensatz des Typs „tt_content“) wird auf der Website in der „Standardsprache“ und als „Live-Datensatz“ angezeigt. In der Datenbank hat dieser Datensatz eine „uid“, eine numerische Darstellung des Inhalts, auf den verwiesen oder verlinkt werden kann. In unserem Beispiel hat dieser Datensatz die uid=13.

Fügen wir nun eine zweite Sprache, beispielsweise „Hebräisch“, zur Website hinzu.
Als Nächstes aktualisieren wir unser Inhaltselement, indem wir den Inhalt ins Hebräische übersetzen. Dies ist die „übersetzte Sprache“ und es handelt sich immer noch um einen „Live-Datensatz“, sodass der Inhalt öffentlich ist, sobald wir auf die Schaltfläche „Speichern“ klicken.

Intern wird ein neuer Datensatz, uid=14, erstellt, der auf uid=13 als „Übersetzungs-Elternteil“ (normalerweise ein Feld namens „l10n_parent“) verweist, bei dem es sich um den „Standardsprache“-Datensatz handelt.
Fügen wir einen benutzerdefinierten Arbeitsbereich mit dem Namen „Staging-Arbeitsbereich“ hinzu, damit wir an unveröffentlichten Inhalten arbeiten können, ohne die Live-Website zu beeinträchtigen. Hier sehen wir alle Inhalte des aktuellen „Live-Arbeitsbereichs“, bis etwas geändert wird. Wenn etwas in der „Standardsprache“ geändert wird, wird eine Kopie dieses Datensatzes mit uid=15 erstellt. Diese Kopie, die wir „versionierter Datensatz“ nennen, befindet sich im Workspace ID=1 und ist mit dem „Live-Datensatz“ verbunden, der in der Datenbank in einem Feld namens „t3ver_oid“ (oid steht für Online-ID) gespeichert ist.

Wir können nun eine Vorschau des geänderten („versionierten“) Inhalts anzeigen und auch die Übersetzung ändern. Auf diese Weise erhalten wir eine weitere Kopie (uid=16), diesmal aus der „Übersetzungssprache“ des „Live-Datensatzes“, wodurch dieser zum „versionierten Datensatz der Übersetzungssprache“ wird.

Hier werden Overlays eingesetzt. TYPO3 verwendet Overlays im Hintergrund, wenn eine Seite mit Inhalten in einer Übersetzung oder in einem Arbeitsbereich (oder in beiden) in der Vorschau angezeigt wird.
Damit dies funktioniert, verfügt TYPO3 über ein „Context“-Objekt, in dem der aktuelle Workspace (ID) und die Sprache (ID) gespeichert sind. TYPO3 ruft zunächst immer die „Standardsprache des Live-Datensatzes“ ab (Sprache=0 und Workspace=0) und überprüft dann für jeden einzelnen Datensatz, ob es einen versionierten Datensatz dieser „Standardsprache“ gibt (durch Suche nach einem Datensatz mit „t3ver_oid=13“ und „t3ver_wsid=1“), und ersetzt alle Informationen dieses Datensatzes durch den versionierten Datensatz. Die tatsächliche „uid“ wird jedoch beibehalten.
Dies wird in TYPO3 als „Overlays“ bezeichnet.
Wenn kein versionierter Datensatz gefunden wird, bleibt TYPO3 bei der Live-Version.
Die technische Raffinesse von Overlays: Durch das Beibehalten der „uid“ bleibt jede Referenz oder jeder Link zu diesem Inhalt weiterhin mit der „Live-Version“ verbunden, sodass TYPO3 nicht alle Links ersetzen und anpassen muss, wenn ein versionierter Datensatz erstellt wird.
Wenn der TYPO3-Editor die hebräische Übersetzung anfordert, sucht TYPO3 nach einem „Sprach-Overlay“ und prüft, ob in der „Live-Version“ ein Datensatz vorhanden ist, dessen „Übersetzungs-Elternteil“ auf uid=13 (die Live-Standardsprache) gesetzt ist. Im Staging-Workspace wird auch die hebräische Version auf einen versionierten Datensatz überprüft.
TYPO3 erledigt all dies im Hintergrund. Mit der TYPO3 Core API zum Lesen (PageRepository) und Schreiben (DataHandler) wird all dies für dich erledigt!
Dies ist einer der Hauptgründe, warum das Konzept einer „Standardsprache“ und ihre Verbindung dazu existiert. Darüber hinaus ermöglicht dies eine weitere Funktion von TYPO3: Fallbacks.
Auch wenn man vor allem über Fallbacks im TYPO3-Ökosystem liest, sind Fallbacks eigentlich eine Folge von Overlays — eine Funktion, die möglich ist, weil TYPO3 auf Overlays aufbaut.
Die sogenannten „Fallback-Modi“ bei der Konfiguration einer Seitensprache werden nun angewendet:
Außerdem habe ich den Begriff „Floating Records“ geprägt — Datensätze innerhalb einer Übersetzung, die kein Overlay haben, können weiterhin gerendert werden. Stell dir ein Teaser-Element auf einer Seite vor, das nur in der polnischen Version angezeigt werden soll — das ist ein Floating Record. Dieser Datensatz folgt jedoch nicht der Sortierung und Reihenfolge des Overlay-Mechanismus.
Anstatt die gesamte Datenbank für die Versionierung zu klonen, verwaltet TYPO3 die versionierten Inhalte automatisch für dich, indem es nur die geänderten Inhalte kopiert.
Während des Veröffentlichungsprozesses behält TYPO3 die „Live-Version“ bei und tauscht lediglich die geänderten Felder in die vorhandenen Live-Datenbankeinträge aus.
Inzwischen solltest du verstehen, warum TYPO3 so leistungsstark ist. Die Verwendung der nativen APIs von TYPO3 erledigt alles für dich. Wenn du daran interessiert bist, dein Projekt gemeinsam mit uns zu betrachten, können wir prüfen, ob dein Projekt die TYPO3-APIs richtig nutzt. Ruf uns an.