Zum Inhalt springen

Galerie-Library: Anpassen

Die geteilte Galerie-Bibliothek (\ImmoMakler\Frontend\Gallery\) lässt sich an zwei Stellen anpassen, ohne den Plugin-Code zu verändern:

  1. Filter-Hooks — modifizieren die Bildauswahl, das Optionen-Array oder die Lightbox-Konfiguration zur Laufzeit.
  2. CSS-Variablen — überschreiben Farben, Abstände und Bedienelement-Größen pro Galerie-Instanz.

Verändert die aufgelöste Bildersammlung vor dem Rendern. Wirkt einheitlich auf alle Einsatzorte: Divi-Modul, Bricks-Tag, Shortcode und die Legacy-Skin-Templates.

Signatur:

apply_filters(
'immomakler_gallery_image_collection',
\ImmoMakler\Frontend\Gallery\Image_Collection $collection,
int $post_id,
string $source // 'all' | 'floorplans' | 'non_floorplans'
)

Beispiel — Bilder umkehren:

add_filter(
'immomakler_gallery_image_collection',
function ( $collection, $post_id, $source ) {
if ( ! $collection instanceof \ImmoMakler\Frontend\Gallery\Image_Collection ) {
return $collection;
}
$reversed = array_reverse( $collection->all() );
return new \ImmoMakler\Frontend\Gallery\Image_Collection( $reversed );
},
10,
3
);

Verändert das Optionen-Array, das an das Preset übergeben wird, nachdem Caller-Werte mit den Preset-Standardwerten zusammengeführt wurden. Geeignet, um Optionen wie loop, autoplay, space_between zentral zu erzwingen.

Signatur:

apply_filters(
'immomakler_gallery_options',
array $options,
string $preset_id,
int $post_id,
string $source
)

Beispiel — autoplay für alle Karussell-Presets aktivieren:

add_filter(
'immomakler_gallery_options',
function ( $options, $preset_id, $post_id, $source ) {
if ( in_array( $preset_id, [ 'horizontal_thumbs', 'vertical_thumbs' ], true ) ) {
$options['autoplay'] = true;
}
return $options;
},
10,
4
);

Verändert die Optionen, die an lightGallery() im Browser übergeben werden — z. B. plugins, speed, licenseKey, strings. Wirkt sowohl auf die neue Galerie-Bibliothek als auch auf die Legacy-Skin-Templates (das ist der gleiche Filter, den die alte Lightgallery-Klasse seit Jahren bereitstellt).

Signatur:

apply_filters( 'immomakler_lightgallery_options', array $options )

Beispiel — den Download-Button aktivieren:

add_filter(
'immomakler_lightgallery_options',
function ( $options ) {
$options['download'] = true;
return $options;
}
);

Der Key plugins enthält die Liste der aktiven lightGallery-Plugins. WP-ImmoMakler liefert für alle lightGallery-Plugins ein fertiges Script mit. Sie müssen das jeweilige Script also nicht selbst per wp_enqueue_script() einbinden — es genügt, das passende Token in plugins einzutragen:

TokenPluginStandardmäßig aktiv
lgZoomZoom
lgThumbnailVorschaubilder (Thumbnails)
lgFullscreenVollbild
lgAutoplayAutomatische Wiedergabe (Slideshow)
lgMediumZoomMedium-Zoom
lgRotateDrehen / Spiegeln
lgShareTeilen (Social Media)
lgHashDeep-Linking per URL-Hash
lgPagerSeiten-Punkte (Pager)
lgCommentKommentare
lgRelativeCaptionRelative Bildunterschrift
lgVideoVideo (YouTube, Vimeo, HTML5)
lgVimeoThumbnailVimeo-Vorschaubilder (benötigt lgVideo)

WP-ImmoMakler lädt automatisch genau die JavaScript-Dateien, die zu den tatsächlich in plugins eingetragenen Tokens gehören: Fügen Sie ein Token hinzu, wird das passende Plugin-Script geladen; entfernen Sie eines, entfällt das Script.

Beispiel — automatische Wiedergabe (Slideshow) aktivieren:

add_filter(
'immomakler_lightgallery_options',
function ( $options ) {
$options['plugins'][] = 'lgAutoplay'; // Autoplay-Plugin aktivieren
$options['slideShowAutoplay'] = true; // Slideshow beim Öffnen automatisch starten
$options['slideShowInterval'] = 1500; // Zeit zwischen den Bildern (in ms)
$options['progressBar'] = true; // Fortschrittsbalken anzeigen
return $options;
}
);

Bereits das Hinzufügen von lgAutoplay blendet den Button zum Starten/Stoppen der Wiedergabe in der Lightbox-Werkzeugleiste ein; slideShowAutoplay startet die Wiedergabe zusätzlich automatisch beim Öffnen. Die vollständige Liste der Autoplay-Optionen (slideShowAutoplay, slideShowInterval, progressBar, forceSlideShowAutoplay, autoplayControls) finden Sie in der lightGallery-Dokumentation.

Filter: Steuer-Bereich der Static-Galerie erweitern

Abschnitt betitelt „Filter: Steuer-Bereich der Static-Galerie erweitern“

Die Static-Galerie rendert unten rechts einen Steuer-Bereich (.immomakler-gallery__controls), in dem standardmäßig der “Alle N Fotos anzeigen”-Pillen-Button erscheint (wenn nicht alle Fotos in das Vorschau-Raster passen und die Customizer-Option Wenn mehr Fotos als Vorschauplätze auf “Button” steht).

Über den Filter immomakler_gallery_static_controls_items lassen sich beliebige weitere Aktionen einfügen — typisch sind Anker-Links zu Grundriss, Video oder Virtueller Rundgang-Abschnitten der Detailseite.

Signatur:

apply_filters(
'immomakler_gallery_static_controls_items',
array $items,
\ImmoMakler\Frontend\Gallery\Image_Collection $images,
int $post_id
)

Jedes Item ist ein assoziatives Array mit den folgenden Feldern:

FeldPflichtBeschreibung
modifierBEM-Modifier-Suffix für die CSS-Klasse (z. B. floorplan.immomakler-gallery__controls-item--floorplan).
hrefAnker-Ziel: # für Lightbox-Trigger, #abschnitt-id für interne Links.
labelSichtbarer, übersetzter Text.
data_attributesoptionalattr-name => value-Paare, gerendert als data-<name>="<value>". Verwenden Sie immomakler-gallery-lightbox-index, um einen Lightbox-Trigger zu verkabeln.
aria_labeloptionalScreenreader-Text (überschreibt das sichtbare Label).
icon_svgoptionalRoher SVG-Markup. Wird in einem __controls-item-icon-Span vor dem Label ausgegeben.

Beispiel — “Grundriss anzeigen”-Link hinzufügen, wenn ein Grundriss-Anker auf der Seite existiert:

add_filter(
'immomakler_gallery_static_controls_items',
function ( array $items, $images, int $post_id ): array {
if ( ! has_floorplan( $post_id ) ) {
return $items;
}
$items[] = [
'modifier' => 'floorplan',
'href' => '#grundriss',
'label' => __( 'Grundriss anzeigen', 'mein-theme' ),
'icon_svg' => '<svg width="18" height="18" viewBox="0 0 24 24" fill="currentColor"><path d="..."/></svg>',
];
return $items;
},
10,
3
);

Die eingebauten Presets verwenden CSS Custom Properties auf der Wrapper-Klasse .immomakler-gallery. Damit können Sie Farben, Abstände und Bedienelement-Größen pro Galerie-Instanz oder global überschreiben — ohne Selektoren mit hoher Spezifität schreiben zu müssen.

VariableStandardBeschreibung
--immomakler-gallery-primary-color#af1615Akzentfarbe (Pfeile, aktive Vorschau, Lightbox-Bedienelemente).
--immomakler-gallery-primary-color-inverted#fffKontrastfarbe zur Akzentfarbe (z. B. Pfeil-Icon auf farbigem Button).
--immomakler-gallery-main-aspect4 / 3Seitenverhältnis des Hauptbildes.
--immomakler-gallery-thumb-aspect3 / 2 (vertikal) / 4 / 3 (horizontal)Seitenverhältnis der Vorschaubilder.
--immomakler-gallery-gap8px (horizontal) / 10px (vertikal)Abstand zwischen Bildern. Wirkt sowohl auf den CSS-Grid-Gap der Vorschauleiste als auch auf Swipers spaceBetween — der Loader liest die berechnete Variable beim Initialisieren aus, sodass eigene CSS-Overrides (z. B. responsive Media-Queries) den Abstand zwischen Vorschaubildern konsistent halten.
--immomakler-gallery-thumbs-width200px (vertikal)Breite der Vorschauleiste im vertikalen Layout.
--immomakler-gallery-nav-button-size30pxGröße der Pfeil-Buttons.
--immomakler-gallery-nav-opacity0.8Deckkraft der Hauptbild-Pfeile (im Ruhezustand).
--immomakler-gallery-thumb-default-opacity0.6Deckkraft inaktiver Vorschaubilder.
--immomakler-gallery-thumb-nav-opacity0.5Deckkraft der Vorschauleisten-Pfeile (vertikales Layout).
--immomakler-gallery-thumb-nav-height20pxHöhe der Vorschauleisten-Pfeil-Buttons (vertikales Layout).
--immomakler-gallery-carousel-height400pxHöhe der Galerie im Karussell-Layout.

Beispiel — Akzentfarbe und Hauptbild-Verhältnis global setzen:

.immomakler-gallery {
--immomakler-gallery-primary-color: #1a73e8;
--immomakler-gallery-primary-color-inverted: #ffffff;
--immomakler-gallery-main-aspect: 16 / 9;
}