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

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
modifierSuffixe de modificateur BEM pour la classe CSS (p. ex. floorplan.immomakler-gallery__controls-item--floorplan).
hrefCible d’ancrage : # pour un déclencheur lightbox, #id-section pour des liens internes.
labelTexte 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 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.

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