Contao-News
Wir informieren Dich hier regelmäßig zu Updates, stellen Best-Practice-Arbeiten vor und berichten über Aktuelles aus dem Contaoversum.
Contao 4.8.0 verfügbar
von Leo Feyer – Ankündigungen
Contao Version 4.8.0 ist verfügbar. Das Release enthält neue Features wie z.B. Deferred Image Resizing, 2-Faktor-Authentifizierung im Frontend, Splash-Screens für YouTube- und Vimeo-Videos, Service-Tagging mittels Annotations und einiges mehr.
Weitere Informationen zu etlichen der folgenden Features findet ihr auch in Yanicks Resumee zum Entwicklertreffen.
Deferred Image Resizing #354
In Contao 4.8 erfolgt die Generierung der Vorschaubilder verzögert und nicht mehr direkt während des Seitenaufbaus. Dadurch lädt die Seite einerseits wesentlich schneller und andererseits müssen nur die Bilder angelegt werden, die auch tatsächlich angefragt wurden. Aus einem Source-Set mit verschiedenen Auflösungen (z.B. 1x, 1.5x, 2x) werden also nur die zum Endgerät passenden Bilder generiert.
Daher kann es auch nicht mehr passieren, dass ein Nutzer versehentlich im Dateimanager auf "Alle umschalten" klickt und damit das Backend lahmlegt, weil zu wenig RAM und/oder Skriptlaufzeit für die Generierung der Vorschaubilder zur Verfügung steht.
Deferred Image Resizing ist nicht zu verwechseln mit Image Lazy Loading, bei dem Bilder erst dann vom Server geladen werden, wenn diese in den sichtbaren Bereich des Besuchers gescrollt werden. Lazy Loading wollen wir implementieren, sobald die Browser es nativ unterstützen (siehe #433).
2-Faktor-Authentifizierung im Frontend #363
Seit Contao 4.6 können Backend-Benutzer ihre Accounts mittels 2-Faktor-Authentifizierung absichern. Dieselbe Funktionalität steht nun auch für Frontend-Benutzer zur Verfügung. Der Administrator kann dabei pro Startpunkt einer Webseite entscheiden, ob die 2-Faktor-Authentifizierung optional oder für alle verpflichtend sein soll.
HTTP-Cache
Die letzte große Hürde für eine effektive Nutzung des HTTP-Caches waren unnötige Cookies, die das Speichern einer Seite im Cache verhindern (mehr dazu in Yanicks Beitrag). In Contao 4.8 haben wir das Problem – zumindest für die Core-Distribution – behoben. Wie viel Arbeit das war, lässt sich anhand der Anzahl der zugehörigen Tickets erahnen: #351, #365, #389, #467, #468, #471, #482, #483, #515, #551, #553, #565 und #594.
Contao ist nun erstmals vollständig mit Reverse-Proxies wie z.B. Varnish kompatibel. Die folgende Grafik zeigt die Zeit, die Contao 4.7 und 4.8 jeweils mit und ohne Cache für den Seitenaufbau benötigen:
Die absoluten Zahlen sind unerheblich, da diese von vielen technischen Faktoren wie z.B. der Serverauslastung abhängen. Im relativen Vergleich lässt sich aber sagen, dass Contao 4.8 mit aktiviertem HTTP-Cache die Seiten ca. 40% schneller ausliefert als Contao 4.7 mit aktiviertem HTTP-Cache!
Falls ihr noch mehr zum Thema "Caching in Contao" erfahren wollt, merkt euch schon mal den Termin für Yanicks Vortrag auf der diesjährigen Contao-Konferenz vor.
Verbesserter Debugmodus #544
Der Debugmodus lässt sich in Contao 4.8 einfach per Mausklick im Backend aktivieren, ohne dass dafür eine Datei app_dev.php
benötigt wird, für die zuerst ein Passwort gesetzt werden muss. Außerdem werden im Bereich "Translation" jetzt auch Contao-Übersetzungen angezeigt.
Verbesserte Bildverarbeitung #529 #552
Hochgeladene Bilder werden in Contao 4.8 automatisch anhand ihrer EXIF-Daten gedreht. Außerdem legt Contao auf Wunsch optimierte WEBP-Versionen der Bilder an und erstellt daraus automatisch in ein picture
-Element. Moderne Browser laden dann nur das optimierte Bild.
Im Zuge dieser Änderung wurde das Feld "Standard-Bildgrößen" von den Theme-Einstellungen in die Layout-Einstellungen verschoben.
Splash-Image für YouTube/Vimeo-Videos #300
Um zu verhindern, dass bereits durch das Einbinden eines YouTube- bzw. Vimeo-Videos Daten an den Anbieter übertragen werden, lässt sich in Contao 4.8 ein Splash-Image vorschalten. Das Video wird in diesem Fall erst dann dynamisch nachgeladen, wenn der Besucher das Splash-Image anklickt.
Ein Live-Beispiel dieses Features findet ihr übrigens in diesem News-Beitrag ganz oben im Abschnitt "Deferred Image Resizing".
Zahlenbereich für numerische Eingaben #437
Im Formulargenerator gibt es zwei neue Eingabefelder "Minimalwert" und "Maximalwert", mit denen ihr bei numerischen Textfeldern den Zahlenbereich festlegen könnt, den Besucher dort eingeben können.
Mindestlänge für Suchbegriffe #274
Auf Wunsch kann das Suchmodul in Contao 4.8 so konfiguriert werden, dass Suchbegriffe, die eine bestimmte Mindestlänge unterschreiten, bei der Suche ignoriert werden.
Hervorgehobene News zuerst anzeigen #371
Im Modul "Nachrichtenliste" gibt es nun die Möglichkeit, hervorgehobene Beiträge vor den nicht hervorgehobenen Beiträgen anzuzeigen.
Contao Components #332
In Contao 4.8 wurden einige Contao Components entfernt, da sie entweder veraltet waren oder eine Funktion zur Verfügung gestellt haben, die die Browser inzwischen nativ beherrschen.
Symfony 4-Ordnerstruktur #566
In Symfony 4 liegen die Konfigurationsdateien im Ordner /config
und nicht mehr in /app/config
. Auch wenn die bisherigen Pfade in Contao 4.8 weiterhin unterstützt werden, ist die Verwendung des /app
-Ordners veraltet und wird nicht mehr empfohlen.
- Eigene Symfony-Konfigurationsdateien (z.B.
config.yml
oderservices.yml
) gehören in den Ordner/config
und sollen nicht mehr in/app/config
abgelegt werden. - Angepasste Contao-Dateien (z.B. DCA-Dateien, Übersetzungen oder Templates) gehören in den Ordner
/contao
und sollen nicht mehr in den Ordnern/app/Resources/contao
oder/src/Resources/contao
abgelegt werden.
Service-Tagging mittels Annotations #540
Das Taggen eines Services als Hook, Callback oder Fragment ist in Contao 4.8 alternativ zur services.yml
mittels Annotations möglich.
use Contao\CoreBundle\ServiceAnnotation\Hook;
use Terminal42\ServiceAnnotationBundle\ServiceAnnotationInterface;
class MyListener implements ServiceAnnotationInterface
{
/**
* @Hook("getPageLayout")
*/
public function onGetPageLayout()
{
}
/**
* @Hook("loadPageDetails", priority=32)
*/
public function onLoadPageDetails()
{
}
}
Die Dokumentation des Bundles findet ihr hier: terminal42/service-annotation-bundle
Eigene Picker-Inserttags #450
In Contao 4.8 könnt ihr die vom Picker eingefügten Inserttags überschreiben und so z.B. je nach Kontext ein anderes Tag verwenden.
// Fügt dem link_url-Tag das |absolute-Flag hinzu
'eval' => [
'dcaPicker' => [
'insertTag' => '{{link_url::%s|absolute}}',
],
],
// Verwendet je nach Kontext das link_url- oder news_url-Tag
'eval' => [
'dcaPicker' => [
'pagePicker' => [
'insertTag' => '{{link_url::%s}}',
],
'newsPicker' => [
'insertTag' => '{{news_url::%s}}',
],
],
],
Vordefinierte Bildgrößen #537
Bildgrößen können jetzt auch in einer Konfigurationsdatei definiert werden, falls diese versioniert und wiederverwendet werden sollen.
contao:
image:
sizes:
foobar:
width: 100
height: 200
resizeMode: 'box'
zoom: 100
cssClass: 'foobar-image'
densities: '1x, 2x'
sizes: '100vw'
items:
- width: 50
height: 50
resizeMode: 'box'
zoom: 100
densities: '0.5x, 2x'
sizes: '50vw'
media: '(max-width: 900px)'
- width: 25
height: 25
resizeMode: 'box'
zoom: 100
densities: '0.5x, 2x'
sizes: '25vw'
media: '(max-width: 450px)'
Generische DCA-Labels #532
In Contao 4.8 ist es nicht mehr notwendig, jeder DCA-Action und jedem DCA-Feld ein Label zuzuweisen. Contao findet die Labels selbständig anhand des Keys und fällt bei Actions automatisch auf generische Labels zurück, wenn in der jeweiligen Sprachdatei kein Label enthalten ist.
Die im nachfolgenden Beispiel auskommentierten Zeilen könntet ihr also komplett löschen:
'list' => [
'operations' => [
'edit' => [
// 'label' => &$GLOBALS['TL_LANG']['table']['edit'],
'href' => 'act=edit',
'icon' => 'edit.svg'
],
],
],
'fields' => [
'title' => [
// 'label' => &$GLOBALS['TL_LANG']['table']['title'],
'exclude' => true,
'inputType' => 'text',
'eval' => array('mandatory'=>true 'tl_class'=>'w50'),
'sql' => "varchar(255) NOT NULL default ''"
],
],
Und einiges mehr
Eine Übersicht der weiteren Änderungen findet ihr im Changelog.
Hinweise zum Update
Martin hat seine Image-Library contao/image
in der Version 1.0 veröffentlicht. Dabei gab es im Vergleich zur vorherigen Version einige API-Änderungen, die ihr euch ansehen solltet, wenn ich mit der Library arbeitet.
Außerdem ist das mobile Seitenlayout ab Contao 4.8 nicht mehr Teil der Core-Distribution. Wenn ihr die Funktion benötigt, müsst ihr das Paket contao/mobile-page-layout-bundle
installieren; entweder im Contao Manager oder auf der Kommandozeile mittels composer require contao/mobile-page-layout-bundle
. Bitte beachtet dabei, dass ihr den HTTP-Cache nicht nutzen könnt, wenn ihr mit mobilen Seitenlayouts arbeitet!
Symfony-Kompatibilität
Contao 4.8 ist mit folgenden Symfony-Versionen kompatibel: 4.2, 4.3
Siehe auch: Tickets | Versionsvergleich | Changelog
Kommentare
Kommentar von Ralph Leyendecker |
Tausend dank an das ganze Team für die tolle Arbeit und euren grandiosen Einsatz! Heute Abend wird direkt auf 4.8 umgestellt (-;
Kommentar von Marcus Lelle |
Mannomann,
das ist ja echt ne Menge Holz. Vielen Dank für Eure Arbeit.
Da wird ja ganz schnell die neue LTS ab Frühjahr 2020 feil geboten.
Vielleicht schafft es ja sogar das browser-native lazy loading in die 4.9.
Cool!
Kommentar von Oliver Reiff |
Bravo, Jungs!
Tolles Update und sehr ausgewogen.
Da ist für jeden was dabei - egal ob Anwender oder Entwickler!
Kommentar von 3dr |
Respekt und vielen Dank für eure Arbeit!
Kommentar von Holger Neuner |
Reeeeeeespekt!!! und Anerkennung an das ganze Core-Team und an alle, die dazu beitragen dass Contao immer und immer besser wird :) 1000 Dank für eure Arbeit!
Kommentar von Franko |
Vielen Dank an das Core-Team!
Werde es gleich installieren und die neuen Möglichkeiten inhalieren ...
Kommentar von Holger Hägele |
Super, tolle Features!
Danke an alle Mitwirkenden!
Kommentar von Andi |
Vielen Dank für eure Arbeit!
Kommentar von Stefan SL |
Super Arbeit vom gesamten Core-Team. Danke an euch!
Einen Kommentar schreiben