Aller au contenu

Bibliothèque de galerie : Personnaliser

La bibliothèque de galerie partagée (\ImmoMakler\Frontend\Gallery\) peut être personnalisée à deux endroits sans modifier le code du plugin :

  1. Hooks de filtre — modifient la sélection d’images, le tableau d’options ou la configuration de la lightbox au moment de l’exécution.
  2. Variables CSS — remplacent les couleurs, les espacements et les tailles des éléments de contrôle par instance de galerie.

Modifie la collection d’images résolue avant le rendu. S’applique uniformément à tous les contextes d’utilisation : module Divi, tag Bricks, shortcode et les templates skin hérités.

Signature :

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

Exemple — inverser les images :

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
);

Modifie le tableau d’options transmis au preset après que les valeurs de l’appelant ont été fusionnées avec les valeurs par défaut du preset. Permet d’imposer centralement des options telles que loop, autoplay, space_between.

Signature :

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

Exemple — activer l’autoplay pour tous les presets de carrousel :

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
);

Exemple — désactiver la navigation au clavier :

Par défaut, les presets de slideshow peuvent être pilotés avec les touches fléchées (ainsi que Page précédente / Page suivante) dès que la galerie se trouve dans la zone visible. Lorsque la lightbox est ouverte, les touches fléchées ne contrôlent que la lightbox. L’option keyboard désactive la navigation au clavier :

add_filter(
'immomakler_gallery_options',
function ( $options, $preset_id, $post_id, $source ) {
$options['keyboard'] = false;
return $options;
},
10,
4
);

Modifie les options transmises à lightGallery() dans le navigateur — par exemple plugins, speed, licenseKey, strings. S’applique aussi bien à la nouvelle bibliothèque de galerie qu’aux templates skin hérités (c’est le même filtre que la classe Lightgallery existante met à disposition depuis des années).

Signature :

apply_filters( 'immomakler_lightgallery_options', array $options )

Exemple — activer le bouton de téléchargement :

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

La clé plugins contient la liste des plugins lightGallery actifs. WP-ImmoMakler fournit un script prêt à l’emploi pour tous les plugins lightGallery. Vous n’avez pas besoin d’inclure vous-même le script correspondant via wp_enqueue_script() — il suffit d’ajouter le token approprié dans plugins :

TokenPluginActif par défaut
lgZoomZoom✓
lgThumbnailVignettes (Thumbnails)✓
lgFullscreenPlein écran✓
lgAutoplayLecture automatique (Slideshow)—
lgMediumZoomMedium Zoom—
lgRotatePivoter / Retourner—
lgSharePartager (réseaux sociaux)—
lgHashDeep-linking par hash d’URL—
lgPagerPoints de page (Pager)—
lgCommentCommentaires—
lgRelativeCaptionLégende relative—
lgVideoVidéo (YouTube, Vimeo, HTML5)—
lgVimeoThumbnailVignettes Vimeo (nécessite lgVideo)—

WP-ImmoMakler charge automatiquement exactement les fichiers JavaScript correspondant aux tokens réellement renseignés dans plugins : en ajoutant un token, le script du plugin correspondant est chargé ; en le supprimant, le script est omis.

Exemple — activer la lecture automatique (Slideshow) :

add_filter(
'immomakler_lightgallery_options',
function ( $options ) {
$options['plugins'][] = 'lgAutoplay'; // Activer le plugin autoplay
$options['slideShowAutoplay'] = true; // Démarrer le diaporama automatiquement à l'ouverture
$options['slideShowInterval'] = 1500; // Durée entre les images (en ms)
$options['progressBar'] = true; // Afficher la barre de progression
return $options;
}
);

Il suffit d’ajouter lgAutoplay pour afficher le bouton lecture/pause dans la barre d’outils de la lightbox ; slideShowAutoplay lance également la lecture automatiquement à l’ouverture. La liste complète des options d’autoplay (slideShowAutoplay, slideShowInterval, progressBar, forceSlideShowAutoplay, autoplayControls) est disponible dans la documentation lightGallery.

Filtre : étendre la zone de contrôle de la galerie statique

Section intitulée « Filtre : étendre la zone de contrôle de la galerie statique »

La galerie statique affiche une zone de contrôle (.immomakler-gallery__controls) en bas à droite, où le bouton pilule “Afficher tous les N photos” apparaît par défaut (lorsque toutes les photos ne tiennent pas dans la grille de vignettes et que l’option Customizer Si plus de photos que d’emplacements de vignettes est réglée sur “Bouton”).

Le filtre immomakler_gallery_static_controls_items permet d’ajouter des actions supplémentaires — typiquement des liens d’ancrage vers les sections Plan, Vidéo ou Visite virtuelle de la page de détail.

Signature :

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

Chaque item est un tableau associatif avec les champs suivants :

ChampObligatoireDescription
modifier✓Suffixe de modificateur BEM pour la classe CSS (p. ex. floorplan → .immomakler-gallery__controls-item--floorplan).
href✓Cible d’ancrage : # pour un déclencheur lightbox, #id-section pour des liens internes.
label✓Texte visible et traduit.
data_attributesoptionnelPaires nom-attribut => valeur, rendues sous forme de data-<nom>="<valeur>". Utilisez immomakler-gallery-lightbox-index pour connecter un déclencheur lightbox.
aria_labeloptionnelTexte pour les lecteurs d’écran (remplace le label visible).
icon_svgoptionnelBalisage SVG brut. Affiché dans un span __controls-item-icon avant le label.

Exemple — ajouter un lien “Afficher le plan” lorsqu’un ancrage de plan existe sur la page :

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
);

Les presets de slideshow s’appuient sur Swiper. WP-ImmoMakler ne fournit pas Swiper complet, mais seulement le noyau avec ces modules :

ModuleUsage
NavigationBoutons fléchés
PaginationCompteur d’images (p. ex. « 3 / 20 »)
A11yLibellés pour les lecteurs d’écran
ThumbsBande de vignettes
AutoplayChangement automatique des images
EffectFadeEffet de transition « Fondu »
KeyboardNavigation au clavier avec les flèches
ManipulationAjout d’images à l’exécution

Les presets personnalisés que vous enregistrez via l’action immomakler_gallery_register_presets ne peuvent utiliser que ces modules. Les options Swiper des autres modules, comme effect: 'coverflow' ou mousewheel, restent sans effet.

La copie de Swiper de WP-ImmoMakler est disponible sous window.immomakler.Swiper et n’occupe pas la variable globale window.Swiper. D’autres plugins avec leur propre Swiper, comme Elementor Pro, et WP-ImmoMakler ne se gênent ainsi pas mutuellement.

Les presets intégrés utilisent des propriétés CSS personnalisées sur la classe wrapper .immomakler-gallery. Cela vous permet de remplacer les couleurs, les espacements et les tailles des éléments de contrôle par instance de galerie ou globalement — sans avoir à écrire des sélecteurs à haute spécificité.

VariablePar défautDescription
--immomakler-gallery-primary-color#af1615Couleur d’accentuation (flèches, vignette active, contrôles de la lightbox).
--immomakler-gallery-primary-color-inverted#fffCouleur de contraste de la couleur d’accentuation (p. ex. icône flèche sur bouton coloré).
--immomakler-gallery-main-aspect4 / 3Rapport d’aspect de l’image principale.
--immomakler-gallery-thumb-aspect3 / 2 (vertical) / 4 / 3 (horizontal)Rapport d’aspect des vignettes.
--immomakler-gallery-gap8px (horizontal) / 10px (vertical)Espacement entre les images. Agit à la fois sur le gap de la grille CSS de la bande de vignettes et sur le spaceBetween de Swiper — le loader lit la variable calculée lors de l’initialisation, de sorte que les overrides CSS personnalisés (p. ex. les media queries responsive) maintiennent l’espacement entre les vignettes de manière cohérente.
--immomakler-gallery-thumbs-width200px (vertical)Largeur de la bande de vignettes dans la mise en page verticale.
--immomakler-gallery-nav-button-size30pxTaille des boutons de navigation (flèches).
--immomakler-gallery-nav-opacity0.8Opacité des flèches de l’image principale (au repos).
--immomakler-gallery-thumb-default-opacity0.6Opacité des vignettes inactives.
--immomakler-gallery-thumb-nav-opacity0.5Opacité des flèches de la bande de vignettes (mise en page verticale).
--immomakler-gallery-thumb-nav-height20pxHauteur des boutons de flèche de la bande de vignettes (mise en page verticale).
--immomakler-gallery-carousel-height400pxHauteur de la galerie dans la mise en page carrousel.
--immomakler-gallery-image-positioncenterobject-position de toutes les images recadrées (images principales, vignettes, tuiles). Le réglage Cadrage lors du recadrage la définit via les classes immomakler-gallery--image-position-top (center top) et immomakler-gallery--image-position-bottom (center bottom). Des valeurs personnalisées comme center 70% sont possibles.
--immomakler-gallery-slide-background#fffArrière-plan derrière les images pour les effets de transition « Fondu » et « Aus- und Einblenden ». Visible uniquement derrière des images comportant des zones transparentes, comme des plans enregistrés en PNG. Sur les sites sombres, définissez-le par exemple sur la couleur d’arrière-plan de la page.

Exemple — définir la couleur d’accentuation et le rapport d’aspect de l’image principale globalement :

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