Hola @fernando_pro, el problema que describes es muy común en PrestaShop 1.7.x, especialmente cuando se trabaja con el tema Classic y sus actualizaciones AJAX para las variaciones de producto. Como bien indican @miguelhub y @ruben_deco, el $(document).ready() solo se ejecuta una vez. Necesitas "escuchar" los eventos de PrestaShop para re-inicializar Fancybox cuando el DOM se actualice.
Aquí te dejo una solución más robusta que puedes añadir en tu custom.js o, si no tienes uno, en un nuevo archivo JavaScript que cargues a través de un hook en tu módulo o tema (por ejemplo, displayFooterProduct). Asegúrate de que los archivos de Fancybox estén correctamente cargados y de que no haya conflictos de jQuery.
/**
* custom_fancybox.js
*/
function initProductFancybox() {
// Destruir instancias existentes para evitar duplicados
if ($.fancybox.getInstance()) {
$.fancybox.destroy();
}
$('[data-full-size-image-url]').fancybox({
loop: true,
Este código asegura que Fancybox se inicialice tanto en la carga inicial como después de cada actualización de producto. Sin embargo, para entornos de producción, especialmente si no te sientes cómodo gestionando archivos JavaScript y las futuras actualizaciones del tema, siempre recomiendo usar un módulo dedicado. Estos módulos están diseñados para ser plug-and-play y ser compatibles con futuras versiones de PrestaShop. Puedes considerar una solución para gestionar zoom de imagen sin tocar el código core.