Ir al contenido

Biblioteca de galería: Personalizar

La biblioteca de galería compartida (\ImmoMakler\Frontend\Gallery\) puede personalizarse en dos puntos sin modificar el código del plugin:

  1. Hooks de filtro — modifican la selección de imágenes, el array de opciones o la configuración de lightbox en tiempo de ejecución.
  2. Variables CSS — sobreescriben colores, espaciados y tamaños de controles por instancia de galería.

Modifica la colección de imágenes resuelta antes del renderizado. Actúa de forma uniforme en todos los puntos de uso: módulo de Divi, etiqueta de Bricks, shortcode y los templates heredados del skin.

Firma:

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

Ejemplo — invertir el orden de las imágenes:

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

Modifica el array de opciones que se pasa al preset después de que los valores del llamador se hayan fusionado con los valores predeterminados del preset. Adecuado para imponer opciones como loop, autoplay o space_between de forma centralizada.

Firma:

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

Ejemplo — activar autoplay para todos los presets de carrusel:

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

Ejemplo — desactivar la navegación con las teclas de flecha:

De forma predeterminada, los presets de slideshow pueden manejarse con las teclas de flecha (así como con Re Pág / Av Pág) en cuanto la galería se encuentra en el área visible. Si el lightbox está abierto, las teclas de flecha controlan únicamente el lightbox. La opción keyboard desactiva la navegación con el teclado:

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

Modifica las opciones que se pasan a lightGallery() en el navegador — p. ej., plugins, speed, licenseKey, strings. Actúa tanto en la nueva biblioteca de galería como en los templates heredados del skin (es el mismo filtro que la antigua clase Lightgallery ha ofrecido durante años).

Firma:

apply_filters( 'immomakler_lightgallery_options', array $options )

Ejemplo — activar el botón de descarga:

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

La clave plugins contiene la lista de plugins activos de lightGallery. WP-ImmoMakler incluye un script listo para usar para todos los plugins de lightGallery. No es necesario incluir el script correspondiente usted mismo mediante wp_enqueue_script() — basta con añadir el token adecuado en plugins:

TokenPluginActivo por defecto
lgZoomZoom✓
lgThumbnailMiniaturas (Thumbnails)✓
lgFullscreenPantalla completa✓
lgAutoplayReproducción automática (Slideshow)—
lgMediumZoomMedium Zoom—
lgRotateGirar / Voltear—
lgShareCompartir (redes sociales)—
lgHashDeep-linking por hash de URL—
lgPagerPuntos de página (Pager)—
lgCommentComentarios—
lgRelativeCaptionPie de foto relativo—
lgVideoVídeo (YouTube, Vimeo, HTML5)—
lgVimeoThumbnailMiniaturas de Vimeo (requiere lgVideo)—

WP-ImmoMakler carga automáticamente exactamente los archivos JavaScript correspondientes a los tokens que realmente se hayan incluido en plugins: al añadir un token se carga el script del plugin correspondiente; al eliminarlo, el script no se incluye.

Ejemplo — activar la reproducción automática (Slideshow):

add_filter(
'immomakler_lightgallery_options',
function ( $options ) {
$options['plugins'][] = 'lgAutoplay'; // Activar el plugin de autoplay
$options['slideShowAutoplay'] = true; // Iniciar la presentación automáticamente al abrir
$options['slideShowInterval'] = 1500; // Tiempo entre imágenes (en ms)
$options['progressBar'] = true; // Mostrar barra de progreso
return $options;
}
);

Con solo añadir lgAutoplay aparece el botón de inicio/pausa en la barra de herramientas de la lightbox; slideShowAutoplay también inicia la reproducción automáticamente al abrir. La lista completa de opciones de autoplay (slideShowAutoplay, slideShowInterval, progressBar, forceSlideShowAutoplay, autoplayControls) puede encontrarse en la documentación de lightGallery.

Filtro: ampliar el área de controles de la galería estática

Sección titulada «Filtro: ampliar el área de controles de la galería estática»

La galería estática muestra en la parte inferior derecha un área de controles (.immomakler-gallery__controls) en la que aparece por defecto el botón de píldora “Ver todas las N fotos” (cuando no todas las fotos caben en la cuadrícula de miniaturas y la opción del Customizer Si hay más fotos que espacios para miniaturas está configurada en “Botón”).

Mediante el filtro immomakler_gallery_static_controls_items se pueden añadir acciones adicionales — típicamente son enlaces de anclaje a secciones de plano de planta, vídeo o visita virtual de la página de detalle.

Firma:

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

Cada elemento es un array asociativo con los siguientes campos:

CampoObligatorioDescripción
modifier✓Sufijo modificador BEM para la clase CSS (p. ej., floorplan → .immomakler-gallery__controls-item--floorplan).
href✓Destino del enlace: # para un disparador de lightbox, #id-de-seccion para enlaces internos.
label✓Texto visible y traducido.
data_attributesopcionalPares nombre-atributo => valor, renderizados como data-<nombre>="<valor>". Use immomakler-gallery-lightbox-index para conectar un disparador de lightbox.
aria_labelopcionalTexto para lectores de pantalla (reemplaza el label visible).
icon_svgopcionalMarcado SVG sin procesar. Se muestra en un span __controls-item-icon antes del label.

Ejemplo — añadir un enlace “Ver plano de planta” cuando existe un anclaje de plano en la página:

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

Los presets de slideshow funcionan con Swiper. WP-ImmoMakler no incluye Swiper completo, sino solo el núcleo con estos módulos:

MóduloPara qué
NavigationBotones de flecha
PaginationContador de imágenes (p. ej., “3 / 20”)
A11yEtiquetas para lectores de pantalla
ThumbsTira de miniaturas
AutoplayCambio automático de imágenes
EffectFadeEfecto de transición “Desvanecer”
KeyboardNavegación con las teclas de flecha
ManipulationAñadir imágenes en tiempo de ejecución

Los presets propios que registre mediante la action immomakler_gallery_register_presets solo pueden usar estos módulos. Las opciones de Swiper de otros módulos, como effect: 'coverflow' o mousewheel, no tienen efecto.

La copia de Swiper de WP-ImmoMakler está disponible en window.immomakler.Swiper y no ocupa la variable global window.Swiper. Así, otros plugins con su propio Swiper, como Elementor Pro, y WP-ImmoMakler no entran en conflicto entre sí.

Los presets integrados utilizan propiedades personalizadas CSS en la clase contenedora .immomakler-gallery. Esto le permite sobreescribir colores, espaciados y tamaños de controles por instancia de galería o de forma global — sin necesidad de escribir selectores con alta especificidad.

VariableValor predeterminadoDescripción
--immomakler-gallery-primary-color#af1615Color de acento (flechas, miniatura activa, controles de lightbox).
--immomakler-gallery-primary-color-inverted#fffColor de contraste respecto al color de acento (p. ej., icono de flecha sobre botón de color).
--immomakler-gallery-main-aspect4 / 3Proporción de aspecto de la imagen principal.
--immomakler-gallery-thumb-aspect3 / 2 (vertical) / 4 / 3 (horizontal)Proporción de aspecto de las miniaturas.
--immomakler-gallery-gap8px (horizontal) / 10px (vertical)Espacio entre imágenes. Afecta tanto al gap del grid CSS de la tira de miniaturas como al spaceBetween de Swiper — el loader lee la variable calculada al inicializar, de modo que los overrides CSS propios (p. ej., media queries responsivas) mantengan el espacio entre miniaturas de forma consistente.
--immomakler-gallery-thumbs-width200px (vertical)Ancho de la tira de miniaturas en el diseño vertical.
--immomakler-gallery-nav-button-size30pxTamaño de los botones de flecha.
--immomakler-gallery-nav-opacity0.8Opacidad de las flechas de la imagen principal (en reposo).
--immomakler-gallery-thumb-default-opacity0.6Opacidad de las miniaturas inactivas.
--immomakler-gallery-thumb-nav-opacity0.5Opacidad de las flechas de la tira de miniaturas (diseño vertical).
--immomakler-gallery-thumb-nav-height20pxAltura de los botones de flecha de la tira de miniaturas (diseño vertical).
--immomakler-gallery-carousel-height400pxAltura de la galería en el diseño de carrusel.
--immomakler-gallery-image-positioncenterobject-position de todas las imágenes recortadas (imágenes principales, miniaturas, mosaicos). El ajuste Encuadre al recortar la establece mediante las clases immomakler-gallery--image-position-top (center top) e immomakler-gallery--image-position-bottom (center bottom). También son posibles valores propios como center 70%.
--immomakler-gallery-slide-background#fffFondo detrás de las imágenes con los efectos de transición “Desvanecer” y “Aus- und Einblenden”. Solo es visible detrás de imágenes con zonas transparentes, como planos guardados en PNG. En sitios oscuros, establézcalo, por ejemplo, en el color de fondo de la página.

Ejemplo — establecer el color de acento y la proporción de la imagen principal de forma global:

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