REDAXO-Addon mit nützlichen Methoden im Umgang mit dem Picture-Element, Responsive Bilder, SVG-Ausgabe, u.v.m.

Overview

Media Manager Responsive für REDAXO 5

image

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 und FriendsOfRedaxo\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

image

Beispiel Responsive-Profil

image

Beispiel-Code -Element

">
<picture>
    <source media="(min-width: 1px)" sizes="" type="image/jpeg" data-width="480" data-height="321"
        srcset="/media/480w_1x/beispielbild.jpg?timestamp=1649629920">
    <source media="(min-width: 1px)" sizes="" type="image/webp" data-width="1024" data-height="683"
        srcset="/media/1920w_1x_webp/beispielbild.jpg?timestamp=1649629920">
    <source media="(min-width: 1px)" sizes="" type="image/jpeg" data-width="960" data-height="641"
        srcset="/media/480w_2x/beispielbild.jpg?timestamp=1649629921">
    <source media="(min-width: 1px)" sizes="" type="image/webp" data-width="960" data-height="641"
        srcset="/media/480w_2x_webp/beispielbild.jpg?timestamp=1649629921">
    <source media="(min-width: 480px)" sizes="" type="image/jpeg" data-width="720" data-height="481"
        srcset="/media/720w_1x/beispielbild.jpg?timestamp=1649629921">
    <source media="(min-width: 480px)" sizes="" type="image/webp" data-width="720" data-height="481"
        srcset="/media/720w_1x_webp/beispielbild.jpg?timestamp=1649629921">
    <source media="(min-width: 480px)" sizes="" type="image/jpeg" data-width="1024" data-height="683"
        srcset="/media/720w_2x/beispielbild.jpg?timestamp=1649629921">
    <source media="(min-width: 480px)" sizes="" type="image/webp" data-width="1024" data-height="683"
        srcset="/media/720w_2x_webp/beispielbild.jpg?timestamp=1649629921">
    <source media="(min-width: 720px)" sizes="" type="image/jpeg" data-width="1024" data-height="683"
        srcset="/media/1920w_1x/beispielbild.jpg?timestamp=1649629921">
    <source media="(min-width: 720px)" sizes="" type="image/webp" data-width="1024" data-height="683"
        srcset="/media/1920w_1x_webp/beispielbild.jpg?timestamp=1649629920">
    <source media="(min-width: 720px)" sizes="" type="image/jpeg" data-width="1024" data-height="683"
        srcset="/media/1920w_2x/beispielbild.jpg?timestamp=1649629921">
    <source media="(min-width: 720px)" sizes="" type="image/jpeg" data-width="1024" data-height="683"
        srcset="/media/1920w_2x_webp/beispielbild.jpg?timestamp=1649629921">
    <source media="(min-width: 1920px)" sizes="" type="image/jpeg" data-width="1024" data-height="683"
        srcset="/media/1920w_2x/beispielbild.jpg?timestamp=1649629921">
    <source media="(min-width: 1920px)" sizes="" type="image/jpeg" data-width="1024" data-height="683"
        srcset="/media/1920w_2x_webp/beispielbild.jpg?timestamp=1649629921"><img style="width: 100%; height: auto;"
        type="image/jpeg" src="/media/1920w_1x/beispielbild.jpg?timestamp=1649629921" width="1024" height="683" alt="">
picture>

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:

  1. 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.
  2. 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.
  3. 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.

Was ist der Unterschied zum Addon media_manager_plus?

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

MIT Lizenz

Autor

Alexander Walther https://www.alexplus.de

Projekt-Lead Alexander Walther

You might also like...
Helfer-Addon um Inhalte für REDAXO 5 zu erstellen

Helfer-Addon um Inhalte für REDAXO 5 zu erstellen Über das Addon content lassen sich Inhalte für eine REDAXO-Instanz einfach und schnell programmatisc

Helfer-Addon um Inhalte für REDAXO 5 zu erstellen

Helfer-Addon um Inhalte für REDAXO 5 zu erstellen Über das Addon content lassen sich Inhalte für eine REDAXO-Instanz einfach und schnell programmatisc

Allow SVG images to be used in Magento CMS blocks and pages via the TinyMCE Wysiwyg Editor.
Allow SVG images to be used in Magento CMS blocks and pages via the TinyMCE Wysiwyg Editor.

Hyvä Themes - SVG support for the Magento CMS Wysiwyg Editor Allow SVG images to be used in CMS blocks and pages via the TinyMCE Wysiwyg Editor. hyva-

Maps Railroad Online Savegames to a SVG map

RailroadOnlineMapper @ian76g#6577 Environments DEV - https://zwackelmann.online/ QA - https://ohnezahn.online/ PROD - https://minizwerg.online/ Gettin

A Polymer e-commerce element for Magento 2

magento-collect Master branch | Develop branch --- | --- | --- | Note: this element is still in progress, watch it to follow the progress. This is lik

This library provides HTML5 element definitions for HTML Purifier, compliant with the WHATWG spec

HTML5 Definitions for HTML Purifier This library provides HTML5 element definitions for HTML Purifier, compliant with the WHATWG spec. It is the most

Simple free responsive (fluid) Magento theme

Please note: This theme is no longer under active development Magento Responsive Theme The GPMD responsive Magento theme is a simple fluid base theme

Foundation 3 Framework for Magento 1.7. Foundation styles and libraries. Magento Responsive theme. Off-canvas Left-Right sidebar columns for mobile.

Magento Foundation 3 Framework Zurb Foundation 3 framework for Magento 1.7. Magento Foundation 3 Version 1.3.0. Demo page: http://magendation.internet

Comments
  • Automatische Sortierung verbessern

    Automatische Sortierung verbessern

    Momentan wird nach Prio sortiert, berücksichtigt aber nicht die ratio, min/max-Werte. Das bedeutet bei nicht optimaler Konfiguration, dass das kleinste Bild und nicht das passende Bild geladen wird.

    opened by alxndr-w 1
  • introduce REX_VAR_MEDIA_PLUS

    introduce REX_VAR_MEDIA_PLUS

    /* ERWEITERT REX_MEDIA - Ein Bild wird optimiert ausgegeben */
    REX_MEDIA_PLUS[file="file.png" output="img" profile="small"]
    REX_MEDIA_PLUS[file="file.svg" output="svg"]
    REX_MEDIA_PLUS[file="file.jpg" output="img-base64"]
    REX_MEDIA_PLUS[file="file.jpg" output="img-src" profile="small"]
    
    /* NUTZT MEDIA MANAGER RESPONSIVE-GRUPPEN */
    REX_MEDIA_PLUS[file="file.jpg" output="picture" group="header"]
    REX_MEDIA_PLUS[file="file.jpg" output="background" group="header"]
    
    opened by alxndr-w 0
  • Klassische URLs (durch TinyMCE, Redactor, CKE5 erstellt) in Gruppen regexen

    Klassische URLs (durch TinyMCE, Redactor, CKE5 erstellt) in Gruppen regexen

    Ansatz wie in https://github.com/FriendsOfREDAXO/media_manager_autorewrite/blob/master/boot.php wählen, aber nicht ein Bild durch den Medien Manager laufen lassen, sondern auf Wunsch in Picture-Element umwandeln.

    opened by alxndr-w 0
Releases(1.1.0)
  • 1.1.0(Jan 4, 2023)

    What's Changed

    • introduce REX_VAR_MEDIA_PLUS by @alxndr-w in https://github.com/alexplusde/media_manager_responsive/pull/7
    • wording beauftragung by @alxndr-w in https://github.com/alexplusde/media_manager_responsive/pull/10
    • ignore composer.json/composer.lock by @eaCe in https://github.com/alexplusde/media_manager_responsive/pull/11
    • add class attributes by @alxndr-w in https://github.com/alexplusde/media_manager_responsive/pull/13

    New Contributors

    • @eaCe made their first contribution in https://github.com/alexplusde/media_manager_responsive/pull/11

    Full Changelog: https://github.com/alexplusde/media_manager_responsive/compare/1.0.1...1.1.0

    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Aug 7, 2022)

    What's Changed

    • replace / with DIRECTORY_SEPARATOR by @alxndr-w in https://github.com/alexplusde/media_manager_responsive/pull/3
    • Docs-Page by @alxndr-w in https://github.com/alexplusde/media_manager_responsive/pull/6

    New Contributors

    • @alxndr-w made their first contribution in https://github.com/alexplusde/media_manager_responsive/pull/3

    Full Changelog: https://github.com/alexplusde/media_manager_responsive/compare/1.0.0...1.0.1

    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Jul 13, 2022)

    Version 1.0.0 [13.07.2022]

    Diese Version kann für den produktiven Einsatz verwendet werden.

    • fixed: Media-Query im Picture-Element berücksichtigt nun auch max-width
    • neu: Kompatibilität zum Addon Cache Warmup verbessert - neue Einstellungsseite
    • verbessert: Sortierung der Profilnamen bei der Auswahl nun alphabetisch
    • fixed: CSS-Styles aus dem img-Fallback-Element in Picture entfernt
    • fixed: Umgeht den webp-Dateinamen-Bug, siehe https://github.com/redaxo/redaxo/issues/4519

    Geschwister-Addon Speed Up: https://github.com/alexplusde/speed_up Live-Docs: https://github.com/alexplusde/media_manager_responsive/blob/main/README.md

    Source code(tar.gz)
    Source code(zip)
  • 0.6-dev(Jul 13, 2022)

    • fixed: Media-Query im Picture-Element berücksichtigt nun auch max-width
    • neu: Kompatibilität zum Addon Cache Warmup verbessert - neue Einstellungsseite
    • verbessert: Sortierung der Profilnamen bei der Auswahl nun alphabetisch

    Full Changelog: https://github.com/alexplusde/media_manager_responsive/compare/0.5-dev...0.6-dev

    Geschwister-Addon Speed Up: https://github.com/alexplusde/speed_up Live-Docs: https://github.com/alexplusde/media_manager_responsive/blob/main/README.md

    Source code(tar.gz)
    Source code(zip)
Owner
alex+ Informationsdesign
alex+ Informationsdesign
Redaxo 5-Addon zum gruppieren beliebiger Inhaltsmodule (Blöcke) innerhalb eines Spaltenrasters mit selbst definierten Templates.

Gridblock Redaxo 5-Addon zum gruppieren beliebiger Inhaltsmodule (Blöcke) innerhalb eines Spaltenrasters. Die Inhaltsmodule entsprechen dabei den übli

Falko Müller 13 Jun 27, 2022
SliceColumns is a REDAXO AddOn. Grid arrangement for REDAXO article slices.

REDAXO-AddOn: SliceColumns Das REDAXO-AddOn erlaubt die Anordnung der Slices in Spalten und das Verschieben von Blöcken per Drag & Drop. Screenshot mi

Friends Of REDAXO 20 Sep 12, 2022
Diese Demo demonstriert den Aufbau einer REDAXO Website mit UIKit3

UIKit3 Demo für REDAXO 5 Diese Demo demonstriert den Aufbau einer REDAXO Website mit UIKit3. Diese Demo benötigt eine utf8m4 kompatible Datanbank. Hin

Friends Of REDAXO 19 Jan 6, 2023
Ein einfacher Seeder mit "Migration" für YForm 4 - REDAXO 5

YForm Datenbank "Migration"/Seeder Über die Addon-Einstellung lassen sich Templates mit einem Tabellen Namen für YForm Tabellen erstellen. Über diese

Thorben 4 May 9, 2022
Statistik Addon zur Erfassung von Seitenaufrufen. Für das CMS Redaxo.

Analytics Addon für REDAXO CMS Work in Progress - nicht für den produktiven Einsatz geeignet Features: Dieses Addon stellt im REDAXO CMS eine Besucher

Andreas Lenhardt 27 Dec 14, 2022
REDAXO-Addon: yform UI 🔧

REDAXO-Addon: yform UI Dieses Addon bietet eine einfache Möglichkeit yform-Felder mit einer Breite zu speichern. Dadurch spart man sich Zeit beim erst

Friends Of REDAXO 15 Sep 12, 2022
Collect - REDAXO-Addon für APIs und Feeds auf Basis von YForm

Collect sammelt anhand unterschiedlicher APIs und Schnittstellen in regelmäßigen Abständen Social Media Posts, RSS-Einträge, Videos und Playlists und andere Inhalte.

alex+ Informationsdesign 5 Jun 23, 2022
REDAXO Addon für Sachspenden

REDAXO-AddOn: Sachspende Was es macht Mit dem AddOn kann man eine Spendenliste einrichten. Der Besucher der Website kann sich dann aus einem Formular

Wolfgang Bund 5 Sep 9, 2022
Ein REDAXO-Addon, das durch Prefetching und Preloading die Ladedauer für Website-Besuchende verbessert

SPEED_UP für REDAXO 5 Ein REDAXO-Addon, das durch Prefetching und Preloading von Artikeln und Kategorien die wahrgenommene Ladezeit ausgewählter Seite

alex+ Informationsdesign 11 Dec 15, 2022
REDAXO 5 Addon für Metainfos an YRewrite-Domains auf Basis von YForm.

Meta-Infos für YRewrite Domains auf Basis von YForm 4 Ergänzt YRewrite um die Möglichkeit, Metainformationen an Domains zu verwalten. Mit vorgefertigt

alex+ Informationsdesign 9 Sep 19, 2022