Pro-Tipp: Das Menü kann auch durch Drücken der Taste m geöffnet bzw. geschlossen werden.
von Marcus Lelle
Contao 6.0 - Input, gib mir Input
Mit Contao 6.0 wird eine neue Ära eingeläutet - wie es sich für ein Major-Release gehört. Contao 5.0 liegt bereits viereinhalb Jahre zurück. Falls du kurz in Erinnerungen schwelgen möchtest, schaue dir Bjarkes 20 Jahre Rückblick (Jahr 2022) an.
Das Core-Team und viele andere Entwickler:innen haben wieder knapp 150 Pull Requests verarbeitet.
Contao 6.0 wird bis Februar 2027 mit Updates versorgt und durch Contao 6.1 abgelöst.
Welche Contao-Versionen aktuell unterstützt werden, kannst du im Contao Release-Plan nachlesen.
Kein Input-Encoding mehr
Das größte Feature der neuen Contao-Version ist eigentlich etwas, was wegfällt: Contao verzichtet nun vollständig auf Input-Encoding.
Was ist Input-Encoding?
Bis jetzt speichert Contao bestimmte Zeichen, die du eingibst (also beim Input), codiert in der Datenbank.
Ein paar Beispiele:
Deine Eingabe
Speicherung in der Datenbank
<
<
(
(
&
&
'
'
Damit wurde unter anderem verhindert, dass Code, der da nicht hingehört, aus Versehen in deine Inhalte gelangt.
Solange du nur Daten in Contao eingibst und mit Contao ausgibst, ist dir das vielleicht nie aufgefallen. Aber wenn du mal Daten aus der Datenbank exportiert hast, z. B. per phpMyAmin oder mit einer Erweiterung, die das direkt aus dem Contao-Backend erledigt, bist du bestimmt schon mal über diese codierten Texte gestolpert. Vielleicht haben Sie dich auch schon manchmal in den Wahnsinn getrieben, wie mich.
Was macht Contao jetzt anders?
Ab jetzt werden die Zeichen, die du eingibst, ohne Umwandlung in der Datenbank gespeichert. Eine ( bleibt eine (.
Damit steht dort ein Inhalt, der in mehreren Kontexten verwendet werden kann, ohne dass dafür Codierung rückgängig gemacht werden muss, die für einen bestimmten Zweck vielleicht gar nicht nötig war. Er kann in HTML ausgegeben werden, als JSON-LD, als XML, usw.
Es kann für (externe) Suchen verwendet werden oder in API-Zugriffen.
Ab jetzt: Output-Encoding
Damit Contao weiterhin sicher bleibt, verwendet es ab jetzt Output-Encoding, und zwar immer genau in dem Kontext, in dem es gebraucht wird.
Spoiler: Ein wichtiges Feature dafür kommt im nächsten Abschnitt dieses Artikels.
Wichtig für dich: Wenn du eigenen Code schreibst oder Templates anpasst, musst du darauf achten, den Inhalt, den dir die Datenbank liefert, richtig zu encoden. Das Tolle an Twig: Standardmäßig wird hier immer ein Encoding bzw. Escaping durchgeführt. Wo immer du bis jetzt vielleicht raw verwendet hast, solltest du in Zukunft checken, was du an Daten erwartest. Mit dem Filter sanitize_html('contao') werden beispielsweise nur die HTML-Tags zugelassen, die du im Backend unter Systemeinstellungen zulässt.
Der einfachste Weg, um das zu erreichen, ist, dafür Twig zu verwenden. Und deshalb heißt es in Contao 6 nun:
Bye, bye HTML5-Templates
Contao kommt nun komplett ohne HTML5-Templates aus und setzt vollständig auf Twig.
Diesen Weg beschreiten wir nun schon seit mehreren Jahren, angefangen mit den Content Elementen. Ab jetzt gilt das dann auch für News, Events, die Navigation usw.
Damit entfällt im Backend auch der Menüpunkt "Templates".
Übrigens: Um dir den Umstieg auf Contao 6 zu erleichtern, ohne das neue Slot-Layout zu nutzen, gibt es selbst das alte fe_page Seiten-Template nun als konvertierte Twig-Variante.
DBAFS benutzt neuen Filehash
Das datenbankgestützte Dateisystem benutzt einen neuen Filehash (xx128).
Vor dem Update auf Contao 6.0 sollte das Dateisystem synchronisiert sein und nach dem Update sollte eine weitere Synchronisierung vorgenommen werden. Entweder machst du das im Backend oder mit dem contao:filesync Command auf der Konsole.
Es kann nur eines geben
Contao verzichtet ab jetzt auf die Möglichkeit, mehrere Backend-Themes zu haben. Das Theme flexible wird zum Standard und der Ordner system/themes entfällt. Damit können neue Features einfacher implementiert werden, ohne dass es dadurch zu einem Bruch kommt.
Du willst oder musst das Theme anpassen? Nichts leichter als das. Du kannst schon seit längerem sehr leicht Anpassungen am Backend vornehmen.
Geschützte Dateien nun auch über das Video-Element den {{file::*}}-InsertTag
Contao erzeugt nun automatisch temporäre URLs zu Dateien, die in geschützten Ordnern liegen. Damit kannst nun neben den Download-Elementen nun auch das Video-Element verwenden, um bestimmte Daten nur bestimmten Mitglieder-Gruppen anzuzeigen.
Um das Ganze noch zu toppen: Das gilt auch für den {{file::*}}-Insert-Tag und steht dir damit fast überall zur Verfügung.
Wenn du Formularfelder um eigene CSS-Klassen ergänzt, werden diese nun nur noch dem umschließenden Wrapper hinzugefügt. Bisher wurden diese Klassen an mehreren Stellen des Widgets hinzugefügt.
Du kannst jetzt Elemente direkt in verschachtelte Elemente einfügen, ohne vorher eine Ebene tiefer zu wechseln. Das betrifft die Elementgruppe, den Core-Slider und das Akkordeon.
Neben „echten“ Datenbank-Feldern unterstützt Contao seit 5.7 auch „virtuelle“ Felder, die in einem JSON-Feld in der Datenbank zusammengefasst werden. Das soll verhindern, dass man mit vielen Erweiterungen die maximale Anzahl an Feldern in MySQL erreicht.
Der Core bringt eine AbstractColumnToVirtualMigration mit, die Erweiterungsentwickler nutzen können, um eigene Felder in virtuelle Felder umzuwandeln.
Ab Contao 6.0 wird dieses Feld auch im Core genutzt.
Wichtig: Wenn du ein bestehendes Contao 5.x auf Contao 6.0 updaten willst, musst du bitte zuerst auf die aktuellste Version von Contao 5.7 updaten, damit alle Migrationen vorhanden sind.
Auf geht's in eine neue Ära
Wie üblich ist der erste Release einer neuen Major-Version kein Feature-Feuerwerk.
Etliche Stunden flossen in den Wechsel von Input- zu Output-Encoding und die endgültige Umstellung auf Twig. Damit sind wichtige technische Grundlagen geschaffen – und der Weg ist frei für das, was als Nächstes kommt.
Denn obwohl Contao 6.1 erst in sechs Monaten erscheint, sind die ersten Verbesserungen dafür schon heute fertig und gemerged: Baumansichten werden bis zu viermal schneller, auch das Menü-Rendering wurde deutlich beschleunigt und die Grundbausteine für eine neue API sind gelegt.
Und das ist erst der Anfang: Weitere Features sind bereits in Arbeit und die Entwicklung nimmt richtig Fahrt auf.
Contao 6.0 legt das Fundament. Mit 6.1 geht's jetzt richtig los. Sei gespannt!
Marcus hat sich der Projekt-Koordination von Contao angenommen und versucht dabei den gordischen Knoten zu lösen. Seit 2003 ist er als BIADES selbstständiig und seit 2005 ist er Projektleiter und Zahlenmensch bei ANTWORT:INTERNET in Berlin. Durch seine Freizeit begleiten ihn Justus, Peter und Bob sowie seine Familie.
Kommentare
Kommentar von Philipp |
MEEEEGA Release! Danke an alle!
Antwort von Marcus Lelle
Danke, Phil.
Was gefällt dir am meisten?
Einen Kommentar schreiben