script>
(function() {
const textoReset = "Limpiar";
function independizarFiltroPorFuerza() {
// Encontramos el contenedor de filtros de la tienda (el que no es el buscador global)
const contenedorFiltros = document.querySelector('.woof_search_form_container_container:not([data-sid="buscador_global"])');
if (!contenedorFiltros) return;
const formularioFiltros = contenedorFiltros.querySelector('form');
if (!formularioFiltros) return;
// 1. CORTAR LA COMUNICACIÓN CON EL HEADER
if (!formularioFiltros.classList.contains('filtro-blindado')) {
formularioFiltros.classList.add('filtro-blindado');
// Le borramos cualquier clase nativa de HUSKY que provoque la unificación automática
formularioFiltros.classList.remove('woof_ajax_search_form');
formularioFiltros.removeAttribute('data-ajax-redraw');
}
// 2. FORZAR AUTOSUBMIT SIN PASAR POR EL MOTOR GLOBAL DE HUSKY
const inputsFiltro = contenedorFiltros.querySelectorAll('input[type="radio"], select, input[type="checkbox"]');
inputsFiltro.forEach(input => {
if (!input.classList.contains('listener-blindado-activo')) {
input.classList.add('listener-blindado-activo');
input.addEventListener('change', function(e) {
// Detener por completo la propagación del evento hacia el header global
e.stopImmediatePropagation();
e.stopPropagation();
// Construimos la URL de filtrado de forma manual basándonos ÚNICAMENTE en este bloque
setTimeout(() => {
let parametros = [];
// Escaneamos solo los inputs seleccionados DENTRO de este contenedor de filtros
contenedorFiltros.querySelectorAll('input[type="radio"]:checked, input[type="checkbox"]:checked').forEach(el => {
if (el.name && el.value && el.value !== '0' && el.value !== '-1') {
parametros.push(`${el.name}=${el.value}`);
}
});
contenedorFiltros.querySelectorAll('select').forEach(select => {
if (select.name && select.value && select.value !== '0' && select.value !== '-1') {
parametros.push(`${select.name}=${select.value}`);
}
});
// Construimos la URL limpia para el Loop Grid sin arrastrar el 'woof_text' del header
let urlLimpia = window.location.origin + window.location.pathname;
if (parametros.length > 0) {
urlLimpia += '?swoof=1&' + parametros.join('&');
}
// Forzamos el redibujado por AJAX del Loop Grid usando la URL limpia
if (typeof woof_ajax_page_redraw === 'function') {
woof_ajax_page_redraw(urlLimpia);
} else {
// Fallback de recarga tradicional si el AJAX está congelado
window.location.href = urlLimpia;
}
}, 50);
});
}
});
// 3. CONTROL INDEPENDIENTE DEL TEXTO DEL BOTÓN RESET
const btnReset = contenedorFiltros.querySelector('button.woof_reset_search_form');
if (btnReset && btnReset.textContent.trim() !== textoReset) {
btnReset.textContent = textoReset;
btnReset.innerText = textoReset;
}
}
// Loops y observador para mantener el blindaje activo contra el AJAX
let intentos = 0;
const loopInicial = setInterval(() => {
independizarFiltroPorFuerza();
intentos++;
if (intentos > 30) clearInterval(loopInicial);
}, 100);
const observer = new MutationObserver(() => { independizarFiltroPorFuerza(); });
observer.observe(document.body, { childList: true, subtree: true });
window.addEventListener('load', independizarFiltroPorFuerza);
})();