NikMaster777
@NikMaster777

Как сделать чтобы фильтр не закрывался?

В интернет магазине фильтр закрывается после каждого нажатия (выбора) на атрибут товара. Нужно чтобы была возможность выбрать несколько атрибутов. Выбрать несколько конечно можно, но фильтр закрывается каждый раз. Подскажите как сделать чтобы фильтр не закрывался после каждого выбора атрибута? Сайт
  • Вопрос задан
  • 268 просмотров
Пригласить эксперта
Ответы на вопрос 2
Здравствуйте!

У вас все ведет в этот файл:
https://evro-brend.ru/wp-content/themes/woodmart/js/functions.min.js


В этом файле есть функция отвечающаяя за этот сайдбар - hideShopSidebar - там все настройки и хранятся..в том числе и закрытие сайдбара после клика

В этом месте вызывается эта функция:
(woodmartThemeModule.ajaxFilters = function () {
            if (a("body").hasClass("woodmart-ajax-shop-on") && void 0 !== a.fn.pjax && !a("body").hasClass("single-product")) {
                var c = this,
                    d = !1;
                a(".products");
                a("body").on("click", ".post-type-archive-product .products-footer .woocommerce-pagination a", function (a) {
                    e(!0);
                }),
                    a(document).pjax(b.ajaxLinks, ".main-page-wrapper", { timeout: woodmart_settings.pjax_timeout, scrollTo: !1 }),
                    "click" == woodmart_settings.price_filter_action
                        ? a(document).on("click", ".widget_price_filter form .button", function () {
                              var b = a(".widget_price_filter form");
                              return a.pjax({ container: ".main-page-wrapper", timeout: woodmart_settings.pjax_timeout, url: b.attr("action"), data: b.serialize(), scrollTo: !1 }), !1;
                          })
                        : "submit" == woodmart_settings.price_filter_action &&
                          a(document).on("submit", ".widget_price_filter form", function (b) {
                              var c = a(".main-page-wrapper");
                              a.pjax.submit(b, c);
                          }),
                    a(document).on("pjax:error", function (a, b, c, d) {
                        console.log("pjax error " + c);
                    }),
                    a(document).on("pjax:start", function (b, c) {
                        a(".site-content").removeClass("ajax-loaded"), a(".site-content").addClass("ajax-loading"), woodmartThemeModule.hideShopSidebar();
                    }),
                    a(document).on("pjax:complete", function (b, d, f) {
                        c.shopPageInit(),
                            e(!1),
                            a(document).trigger("wood-images-loaded"),
                            a(".woodmart-sidebar-content").scroll(function () {
                                a(document).trigger("wood-images-loaded");
                            }),
                            a(".site-content").removeClass("ajax-loading");
                    }),
                    a(document).on("pjax:beforeReplace", function (b, c) {
                        a(".filters-area").hasClass("filters-opened") && "yes" == woodmart_settings.shop_filters_close && ((d = !0), a("body").addClass("body-filters-opened"));
                    }),
                    a(document).on("pjax:end", function (b, c, e) {
                        d && (a(".filters-area").css("display", "block"), woodmartThemeModule.openFilters(200), (d = !1)), a(".site-content").removeClass("ajax-loading"), a(".site-content").addClass("ajax-loaded");
                    });
                var e = function (b) {
                    if ("no" == woodmart_settings.ajax_scroll && 0 == b) return !1;
                    var c = a(woodmart_settings.ajax_scroll_class),
                        d = c.offset().top - woodmart_settings.ajax_scroll_offset;
                    a("html, body").stop().animate({ scrollTop: d }, 400);
                };
            }
        }),


А конкретнее - здесь:
a(document).on("pjax:start", function (b, c) {
                        a(".site-content").removeClass("ajax-loaded"), a(".site-content").addClass("ajax-loading"), woodmartThemeModule.hideShopSidebar();
                    }),


Возможно, стоит попробовать вот так:
a(document).on("pjax:start", function (b, c) {
                        a(".site-content").removeClass("ajax-loaded"), a(".site-content").addClass("ajax-loading");
                    }),


Но это не точно...нужно пробовать
Ответ написан
azerphoenix
@azerphoenix
Java Software Engineer
Здравствуйте!
В первую очередь нужно посмотреть на возможности этого фильтра. Может быть в настройках темы есть возможность отключить ajax поиск, так как именно из-за аякса судя по всему панель закрывается, так как применяется соответствующий фильтр.
Если этого нет, то можно:
1) отключить этот фунцкионал и использовать другой плагин. Думаю, что в вашу тему хорошо интегрируется плагин Woocommerce Product Filter by XforWooCommerce/ В нем есть аякс поиск, также в нем есть возможность отключения "instant search".

2) копаться в функционале вашей текущей темы и смотреть где и что нужно подправить. Тут по-хорошему надо покопаться в файлах темы. А это уже выходит за рамки оказания помощи на тостер. Обычно, в таких случаях рекомендуется обратиться на фриланс.

3) костыльный способ - на триггер onChange() в области этого сайдбара повесить функцию автоклика на кнопке "Показать фильтры". Т.е если пользователь на что-нибудь кликает в области сайдбара фильтра, то кликать на этой кнопки, что вызовет повторное открытие сайдбара.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы