diff --git a/wp-content/themes/cosmopet/modules/shop/components/catalog/component-controller.php b/wp-content/themes/cosmopet/modules/shop/components/catalog/component-controller.php index 41ce8bf..2eccb89 100644 --- a/wp-content/themes/cosmopet/modules/shop/components/catalog/component-controller.php +++ b/wp-content/themes/cosmopet/modules/shop/components/catalog/component-controller.php @@ -19,7 +19,7 @@ $raw_taxonomy = str_replace('wpf_filter_', '', $key); error_log("→ Обнаружен фильтр: $raw_taxonomy"); - $slugs = is_array($value) ? $value : explode(',', $value); + $slugs = is_array($value) ? $value : preg_split('/[\|,]/', $value); error_log("→ Slugs: " . implode(', ', $slugs)); // Попробуем с pa_ и без, в зависимости от существования таксономии diff --git a/wp-content/themes/cosmopet/templates/_pages/shop/archive-product.twig b/wp-content/themes/cosmopet/templates/_pages/shop/archive-product.twig index 4e8c738..fd1da69 100644 --- a/wp-content/themes/cosmopet/templates/_pages/shop/archive-product.twig +++ b/wp-content/themes/cosmopet/templates/_pages/shop/archive-product.twig @@ -103,35 +103,48 @@ document.addEventListener("DOMContentLoaded", () => { }); }); - // Обработка клика на отдельные теги активных фильтров - const activeFilterTags = document.querySelectorAll('.active-filter-tag'); - activeFilterTags.forEach(tag => { - tag.addEventListener('click', () => { - const slug = tag.dataset.filterSlug; - const taxonomy = tag.dataset.filterTaxonomy; +// Обработка клика на теги активных фильтров +document.querySelectorAll('.active-filter-tag').forEach(tag => { + tag.addEventListener('click', function(e) { + e.preventDefault(); + const slug = this.dataset.filterSlug; + const taxonomy = this.dataset.filterTaxonomy; + const urlParam = 'wpf_filter_' + taxonomy.replace('pa_', ''); + + const url = new URL(window.location.href); + const params = new URLSearchParams(url.search); + + if (params.has(urlParam)) { + const currentValue = params.get(urlParam); - // Убираем префикс pa_ если есть для формирования параметра URL - const rawTaxonomy = taxonomy.replace('pa_', ''); - const param = 'wpf_filter_' + rawTaxonomy; + // Разделяем значения, учитывая как закодированные, так и обычные разделители + let values = currentValue.split(/\||%7C|,/); - const url = new URL(window.location.href); - const params = new URLSearchParams(url.search); - - if (params.has(param)) { - let values = params.get(param).split(','); - values = values.filter(v => v !== slug); - - if (values.length > 0) { - params.set(param, values.join(',')); - } else { - params.delete(param); + // Декодируем и фильтруем значения + const newValues = values.filter(v => { + return decodeURIComponent(v.trim()) !== slug.trim(); + }); + + // Обновляем URL параметры + if (newValues.length > 0) { + // Используем | как разделитель (можно заменить на ',', если нужно) + params.set(urlParam, newValues.join('|')); + } else { + params.delete(urlParam); + // Дополнительно очищаем связанные параметры + if (urlParam.includes('price')) { + params.delete('wpf_min_price'); + params.delete('wpf_max_price'); } + params.delete('wpf_fbv'); } + // Обновляем URL и перезагружаем страницу url.search = params.toString(); - window.location.href = url.toString(); - }); + window.location.href = url.href; + } }); +}); // Обработка кнопки "Очистить все" const clearAllBtn = document.querySelector('.active-filters__clear'); diff --git a/wp-content/themes/cosmopet/templates/archive-product/archive-product.twig b/wp-content/themes/cosmopet/templates/archive-product/archive-product.twig deleted file mode 100644 index fc1e64d..0000000 --- a/wp-content/themes/cosmopet/templates/archive-product/archive-product.twig +++ /dev/null @@ -1,157 +0,0 @@ -{% set bodyClass = 'bg-white' %} -{% set mainClass = 'wrapper' %} -{% extends 'layout.twig' %} - -{% block content %} - - {% if site_region == 'ru' %} - - {% endif %} - -
- -