Kurze Beschreibung der Zusammenhänge bezüglich mehrsprachiger Seiten und Inhalten zum Selektieren von Seiten und Inhalten in eigenen Erweiterungen.
Eine der häufigsten Funktionen von Erweiterungen in TYPO3 ist das Abfragen von Datensätzen aus der Datenbank. Dabei sind Seiten in der Tabelle pages gespeichert, die Inhalte in der Tabelle tt_content. Handelt es sich um eine einsprachige Website ist die Abfrage sehr einfach.
Nachdem die UID der relevanten Seite ermittelt oder vorgegeben wurde, können mit selbiger alle Datensätze aus der Tabelle tt_content abgefragt werden, bei denen das Feld PID gleich der UID der Seite ist. Damit stehen alle Seitenelemente zur Verfügung. Zusätzlich zur obigen Bedingung wird in den meisten Fällen auch noch getestet, ob die Elemente als gelöscht markiert sind oder anderen Zugriffsbeschränkungen unterliegen. Das ist unter anderem deshalb wichtig, da Seiten beim Löschen nicht aus der Tabelle tt_content entfernt, sondern nur das Feld deleted gesetzt wird.
Bei einer mehrsprachigen Site würde dieses Vorgehen jedoch alle Inhaltselemente der Seite als Ergebnis liefern, unabhängig davon welcher Sprache die einzelnen Inhalte zugeordnet sind. Daher müssen in einer mehrsprachigen Website weitere Felder beachtet werden.
Die Sprachen werden in der Tabelle sys_language abgespeichert. In dieser Tabelle steht die UID für den Wert der Sprache, welcher auch im L-Parameter zu finden ist und welcher in TS-Conditions anzugeben ist. Das Feld title repräsentiert den anzuzeigenden Namen, der Inhalt des Feldes flag die anzuzeigende Flagge.
Mit dem Wert UID aus der Tabelle sys_language steht nun fest nach welchem Wert zu fragen ist, wenn Inhaltselemente und Seiten einer bestimmten Sprache zu finden sind. Vorgegeben sei die Sprach-UID=1 und die Seiten-UID=12, zu der nun alle entsprechenden Daten (Titel der übersetzten Seite und Inhaltselemente) gefunden werden sollen.
Da Sprachvarianten einer Seite in der Tabelle page_language_overlay gespeichert sind, kann die Übersetzung hier gefunden werden, wenn nach PID=12 und sys_language_uid=1 gesucht wird. Diese Abfrage fördert für die Übersetzung alle Eigenschaften der übersetzten Seite. Die Eigenschaften sind die selben wie für eine originale Seite (hidden, deleted, navtitle usw.), welche natürlich in der Übersetzung von der originalen Seite abweichen kann.
Die Inhaltselemente der übersetzten Seite können ermittelt werden, indem aus der Tabelle tt_content alle Datensätze mit der pid=12 und der sys_language_uid=1 abgefragt werden. Die Datensätze mit pid=12 und sys_language_uid=0 wäre die Standardsprache, pid=12 und sys_language_uid=3 die Inhalte für die Sprache mit der UID=3. Welche Sprache dies ist beantwortet wiederum die Tabelle sys_language.