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 oder services.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

Alle News anzeigen

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

Was ist die Summe aus 3 und 5?