Keywords: Responsive, Images, Picture, Srcset, WebP, AVIF, Thumbnails, Performance, Lazy Loading
Übersicht
Media Manager Responsive erweitert rex_media um Methoden für responsive Bilder (<picture>, srcset), moderne Formate (WebP/AVIF), Thumbhash-Platzhalter und Cache-Busting.
Kern-Klassen
| Klasse |
Beschreibung |
Media |
Erweitert rex_media um responsive Methoden |
Profile |
Profil-Gruppen mit Breakpoints |
Type |
Einzelner Media-Manager-Typ in Gruppe |
ManagerHelper |
Programmatische Media-Manager-Typen-Erstellung |
Wichtige Methoden
| Methode |
Parameter |
Rückgabe |
Beschreibung |
::get($filename) |
string |
?Media |
Lädt Medium (erweitert) |
getImg($type) |
string |
string |
<img> mit srcset/width/height |
getPicture($group) |
string |
string |
<picture> mit <source> Tags |
getImgSrcset($group) |
string |
string |
Srcset-String für manuelle Verwendung |
getBackgroundStyles($group, $selector) |
string, string |
string |
Responsive CSS für Background-Images |
getFrontendUrl($media, $type, $timestamp) |
Media, string, bool |
string |
URL mit Cache-Buster |
getSvg() |
- |
string |
Inline-SVG ohne <img> |
getBase64($inline) |
bool |
string |
Base64-kodiertes Bild |
getThumbhash() |
- |
string |
Thumbhash-String (Platzhalter) |
getImgThumbhash() |
- |
string |
<img> mit Thumbhash als Data-URL |
getStructuredData() |
- |
string |
Schema.org JSON+LD für ImageObject |
Setter-Methoden
| Methode |
Parameter |
Beschreibung |
setClass($class) |
string |
CSS-Klasse setzen |
setTitle($title) |
string |
Title/Alt-Text setzen |
setLoading($loading) |
string |
loading=”lazy|eager|auto” |
setAttributes($attributes) |
array |
Zusätzliche Attribute |
Klasse: Profile
Wichtige Methoden
| Methode |
Rückgabe |
Beschreibung |
::getTypes($group) |
?array<Type> |
Alle Typen einer Gruppe |
::getBackgroundStyles($file, $group, $selector) |
string |
CSS-Styles für Background |
getPicture($media, $group) |
string |
Picture-Element generieren |
getSrcset($media, $group) |
string |
Srcset-String generieren |
REX_VAR
REX_MEDIA_PLUS[file="file.jpg" output="img" profile="small"]
REX_MEDIA_PLUS[file="file.svg" output="svg"]
REX_MEDIA_PLUS[file="file.jpg" output="thumbhash"]
REX_MEDIA_PLUS[file="file.jpg" output="picture" group="header"]
REX_MEDIA_PLUS[file="file.jpg" output="background" group="header"]
Praxisbeispiele
1. Einfaches responsive Bild
use Alexplusde\MediaManagerResponsive\Media;
echo Media::get('beispiel.jpg')->getImg('default');
// Liefert <img> mit srcset, width, height, loading
2. Mit CSS-Klasse und Attributen
echo Media::get('beispiel.jpg')
->setClass('img-fluid')
->setTitle('Bildbeschreibung')
->setLoading('lazy')
->setAttributes(['data-category' => 'gallery'])
->getImg('default');
3. Picture-Element mit Breakpoints
echo Media::get('hero.jpg')->getPicture('header');
// Verwendet Profil-Gruppe "header" mit allen definierten Breakpoints
4. Responsive Background-Image
echo Media::get('background.jpg')
->getBackgroundStyles('header', '#hero-section');
// Liefert <style> mit Media-Queries
5. SVG inline ausgeben
echo Media::get('logo.svg')->getSvg();
// Liefert kompletten SVG-Code (kein <img>-Tag)
6. Thumbhash-Platzhalter
// Thumbhash-String
$thumbhash = Media::get('bild.jpg')->getThumbhash();
// <img> mit Thumbhash als Platzhalter
echo Media::get('bild.jpg')->getImgThumbhash();
7. Base64-Encoding
// Base64-String
$base64 = Media::get('icon.png')->getBase64();
// Als Data-URL inline
echo '<img src="' . Media::get('icon.png')->getBase64(true) . '">';
8. Strukturierte Daten
echo Media::get('produkt.jpg')->getStructuredData();
// Liefert Schema.org JSON+LD für ImageObject
9. Attribute-Array für manuelle Verwendung
$media = Media::get('bild.jpg');
$attrs = $media->getImgAsAttributesArray('default');
// Attribute erweitern/überschreiben
$attrs['class'] = trim(($attrs['class'] ?? '') . ' custom-class');
$attrs['data-lightbox'] = 'gallery';
echo '<img ' . rex_string::buildAttributes($attrs) . '>';
10. Frontend-URL mit Cache-Buster
$url = Media::getFrontendUrl(Media::get('bild.jpg'), 'small', true);
// Liefert /media/small/bild.jpg?timestamp=1234567890
11. Profil-Gruppe “default” nutzen
// Verwendet Bootstrap 5.3 Breakpoints (xs, sm, md, lg, xl, xxl @ 1x/2x)
echo Media::get('gallery.jpg')->getPicture('default');
// Mit accept_media_type Effect im Media Manager
// Browser wählt automatisch WebP/AVIF wenn unterstützt
echo Media::get('photo.jpg')->getImg('responsive');
13. REX_VAR in Modulen
// Einfaches Bild
REX_MEDIA_PLUS[file="REX_VALUE[1]" output="img" profile="medium"]
// Picture-Element
REX_MEDIA_PLUS[file="REX_VALUE[1]" output="picture" group="slider"]
// SVG
REX_MEDIA_PLUS[file="REX_VALUE[1]" output="svg"]
14. Profil-Gruppen erstellen (Backend)
// Backend: Media Manager > Media Manager Responsive
// Neue Gruppe anlegen mit Breakpoints:
// - xs_1x: 1-575px @ 1x
// - sm_1x: 576-767px @ 1x
// - md_1x: 768-991px @ 1x
// etc.
15. Programmatische Typ-Erstellung
use Alexplusde\MediaManagerResponsive\ManagerHelper;
$typeId = ManagerHelper::createTypeWithEffects(
'responsive_medium',
'Medium responsive Bild',
[
[
'effect' => 'resize',
'parameters' => [
'rex_effect_resize' => [
'rex_effect_resize_width' => '768',
'rex_effect_resize_height' => '',
'rex_effect_resize_style' => 'maximum'
]
]
]
]
);
// Im Media Manager Type hinzufügen:
// Effect: accept_media_type
// Liefert automatisch WebP/AVIF basierend auf Browser-Support
17. Lazy Loading
echo Media::get('bild.jpg')
->setLoading('lazy')
->getImg('default');
// <img loading="lazy" ...>
18. Art Direction mit Picture
// Verschiedene Bildausschnitte für Mobile/Desktop
$media = Media::get('hero.jpg');
echo $media->getPicture('art-direction');
// Gruppe "art-direction" nutzt verschiedene Crops/Formate
19. Fallback für alte Browser
$media = Media::get('bild.jpg');
$picture = $media->getPicture('responsive');
// <picture> enthält automatisch <img> als Fallback
20. Cache-Warmup-Integration
// Addon cache_warmup läuft über alle Medien
// Generiert alle Profile/Typen-Kombinationen vorab
21. Fragment-Integration
$fragment = new rex_fragment();
$fragment->setVar('media', Media::get('bild.jpg'));
$fragment->setVar('type', 'default');
echo $fragment->parse('media_manager_responsive/img.php');
$fragment = new rex_fragment();
$fragment->setVar('media', Media::get('bild.jpg'));
$fragment->setVar('caption', 'Bildbeschreibung');
echo $fragment->parse('media_manager_responsive/figure.php');
23. Background-Styles mit Custom-Selector
echo Profile::getBackgroundStyles(
'background.jpg',
'hero',
'.hero-section'
);
// Generiert Media-Queries für .hero-section
24. WYSIWYG-Integration
// Backend-Einstellung: Standard-Media-Manager-Typ wählen
// Bilder aus Redactor/TinyMCE werden automatisch optimiert
25. Srcset manuell verwenden
$media = Media::get('gallery.jpg');
$srcset = $media->getImgSrcset('gallery');
echo '<img src="' . $media->getUrl('default') . '"
srcset="' . $srcset . '"
sizes="(max-width: 768px) 100vw, 50vw">';
Integration: Media Manager Responsive arbeitet mit Media Manager (Effekte, Typen, Cache), YForm (Medienpool-Felder), YRewrite (Domain-URLs), cache_warmup (Vorab-Generierung), Media Negotiator (Format-Auswahl), Redactor/TinyMCE (WYSIWYG-Bilder) und unterstützt Imagick/GD für WebP/AVIF-Konvertierung sowie Thumbhash für Platzhalter-Generierung.