Media Manager Responsive für REDAXO 5
REDAXO-Addon mit nützlichen Methoden im Umgang mit dem Picture-Element, responsiven Bilder, SVG-Ausgabe, u.v.m.
Der erste Schritt: Einfach rex_media::get()
durch rex_media_plus::get()
in deinem Code ersetzen und los geht's.
Der zweite Schritt: Eigene Responsive-Gruppen anlegen und Medientypen erstellen / zuordnen.
DER NACHFOLGENDE TEIL DER README WIRD DERZEIT AN DEN NEUEN CODE ANGEGLICHEN UND IST ERST ZU RELEASE GÜLTIG
Features
- Vereinfachte Ausgabe von Picture-Elementen und Bildern mit srcset-Attributen
- Direkte Ausgabe von SVGs ohne Image-Tag, z.B. für Logos und Icons
- Google PageSpeed-, Ladezeit und Benutzererlebnis-Optimierungen
- Automatisches hinzufügen von Timestamps an die URL eines Mediums, um exzessives Caching aktivieren zu können
- Vollständige Ausgabe der Meta-Informationen am Image- oder Picture-Element: Korrekte Höhe und Breite von Bildern werden als
width="XXX" height="XXX"
ausgegeben. - Cachebuster-URLs für Medien
- Optimiert für Google Structured Data - Meta-Informationen für die Google-Suchmaschine.
- Kompatibel zu
FriendsOfRedaxo\minify_images
undFriendsOfRedaxo\focuspoint
rex_media_plus
verwenden
Die Klasse rex_media_plus
ist eine Child-Klasse und erbt alle Methoden von rex_media
bis auf nachfolgende Ergänzungen und Ersetzungen.
getFrontendUrl()
Liefert eine URL zum Frontend einschließlich Timestamp (Cachebuster), z.B. /media/image.ext?timestamp=XXXXXX
getSvg()
Liefert den kompletten Inhalt eines SVGs
getBase64()
Liefert den kompletten Inhalt eines Mediums Base64-kodiert
getPicture($group_name)
Liefert ein vollständiges Picture-Element anhand eines Präfix inkl.
-Elementen. Dazu muss es passende Media Manager Profile mit einer bestimmten Syntax geben, die unter "Media Manager Profile" in dieser Hilfe-Datei erklärt wird.
getSrcset($group_name)
Liefert ein vollständiges Image-Element anhand eines Präfix inkl. srcset=""
-Attribut. Dazu muss es passende Media Manager Profile mit einer bestimmten Syntax geben, die unter "Media Manager Profile" in dieser Hilfe-Datei erklärt wird.
getBackgroundStyles($group_name)
Liefert ein vollständiges Image-Element anhand eines Präfix inkl. srcset=""
-Attribut. Dazu muss es passende Media Manager Profile mit einer bestimmten Syntax geben, die unter "Media Manager Profile" in dieser Hilfe-Datei erklärt wird.
Medien Manager Responsive verwenden
Wird erläutert.
Screenshots
Beispiel-Medientypen-Liste
Beispiel Responsive-Profil
-Element
Beispiel-Code
für responsive Hintergrundbilder
Beispiel-Code
<style>
@media(min-width: 1px) { #title-bg-image{ background-image: url(/media/bs5.title.3x1_s/beispiel.jpg?timestamp=1649631662);} }
@media(min-width: 1px) { #title-bg-image{ background-image: url(/media/bs5.title.3x1_s_webp/beispiel.jpg?timestamp=1649631680);} }
@media(min-width: 480px) { #title-bg-image{ background-image: url(/media/bs5.title.3x1_m/beispiel.jpg?timestamp=1649631681);} }
@media(min-width: 480px) { #title-bg-image{ background-image: url(/media/bs5.title.3x1_m_webp/beispiel.jpg?timestamp=1649631682);} }
@media(min-width: 1024px) { #title-bg-image{ background-image: url(/media/bs5.title.3x1_l/beispiel.jpg?timestamp=1649631683);} }
@media(min-width: 1024px) { #title-bg-image{ background-image: url(/media/bs5.title.3x1_l_webp/beispiel.jpg?timestamp=1649631684);} }
style>
<div id="title-bg-image" style="background-size: cover; background-position: center">
div>
FAQ
Wie verbessert dieses Addon meinen PageSpeed?
Richtig eingesetzt durch die Kombination von 3 Features, die sowohl von Google PageSpeed berücksichtigt werden, als auch das Nutzererlebenis für die Besucher verbessern:
- Durch die parallele Nutzung verschiedener Dateiformate (z.B. WEBP+JPG) und durch Media-Querys, bspw. beim
-Element oder mehreren
-Profilen. Dadurch wählt der Browser des jeweiligen Geräts die passende Auflösung und Bilddateien können bereits im Media Manager verkleinert werden. Statt Bilder mit hunderten an Kilobytes müssen in den jeweiligen Szenarien nur wenige Kilobyte pro Bild übertragen werden.
- Durch Zeitstempel an den jeweiligen Bild-URLs, z.B.
/mediaprofil/beispiel.jpg?timestamp=1234567890
. Richtig eingesetzt kann in der.htaccess
oder an anderer Stelle des Servers das Bild ewig gecached werden - im REDAXO-Kontext auch als "Cache-Buster" bekannt. Nur wenn das Bild sich tatsächlich ändert, ändert sich die URL. - Durch das Auslesen der tatsächlichen Höhen- und Breitenangaben der Bilder - auch von gecachten Media Manager Bildern - ist der Browser in der Lage, Platz für die Abmaße der Bilder zu schaffen, bevor diese geladen sind, und somit Verschiebungen beim Laden und Rendern der Website elimiert werden. Keine nervigen "Layout-Sprünge" mehr.
Google PageSpeed-Scores von deutlich über 90 Punkten sowohl Mobil, als auch am Desktop, sind damit problemlos möglich.
media_manager_plus
?
Was ist der Unterschied zum Addon Media Manager Responsive kommt mit zahlreichen Erweiterungen, die es so in media_manager_plus
nicht gibt. Darüber hinaus verzichtet Media Manager Responsive auf externe Bibliotheken wie lazysizes
, sondern setzt voll und ganz auf moderne Browser-Features und bleibt bei korrekter Konfiguration (bspw. Fallback-Formaten) dennoch kompatibel.
Warum dauert der erste Seitenaufruf nach Verwendung sehr lange?
Puh, statt dass jedes Bild nur ein Media-Manager-Profil durchläuft, sind es je nach gewählten Einstellungen beliebig viele Bilder. Beim Autor dieses Addons sind das schnell mal 18 Varianten pro Bild ((S, M, L) * (JPG, WEBP) * (1x, 2x, 3x) = 18 Kombinationen je Bild) Diese werden aus Optimierungsgründen auch alle in einem Rutsch erstellt.
Bei einer Galerie mit 12 Bildern bedeutet dies statt 12 generierter Bilder nun bspw. 216 Bilder, deren Cache-Versionen erstellt werden.
Ein entsprechend performantes Webhosting-Paket und ausreichend Speicherplatz werden daher empfohlen.
Lizenz
Autor
Alexander Walther https://www.alexplus.de
Projekt-Lead Alexander Walther