Фильтр товаров Есть решение

Алексей
29 августа 2022
1

Добрый день Владимир. Не работает фильтр товаров в д/теме Speed Classic. Например, https://keramograd.ru/keramogr... при введении параметров фильтра, ничего не меняется, предлагает только сброс фильтра. В д/теме Prostore на другом сайте всё работает как часы.

8 ответов
  • Владимир Сергеев
    Разработчик
    Решение
    5 сентября 2022 22:55

    Здравствуйте, Алексей! 

    Извиняюсь за долгие ответы. 
    Проблема не в браузерах или категориях, а в том, что она "гуляющая". 
    В одну загрузку страницы она может проявиться, а в другую – нет. 

    Чтобы решить проблему, нужно отредактировать пару файлов. 

    Первый файл находится в теме для приложения Сайт. 
    Откройте приложение Сайт -> дизайн -> Оформление (Speed Classic) -> шаблоны -> файл offcanvas.filters.html

    В этом файле найдите код: 

    <script>
    	var filters_fired = false;
    	function filters_init(){
    		if (filters_fired === false) {
    			filters_fired = true;
    
    			/* alert('{$wa->get}'); */
    
    			setTimeout(() => {
    
    				$('body').append( $('<link rel="stylesheet" type="text/css" />').attr('href', '{$wa_static_url}wa-content/css/jquery-ui/base/jquery.ui.all.css?v={$wa->version(true)}') );
    				$('body').append( $('<link rel="stylesheet" type="text/css" />').attr('href', '{$wa_parent_theme_url}wa-filters.min.css?v={$wa_theme_version}') );
    
    				$.getScript( "{$wa_active_theme_url}shop.filters.min.js" ).done(function(){
    					{$_lang = substr($wa->locale(), 0, 2)}
    					{if $_lang !== "en"}
    						$.getScript( "{$wa_url}wa-content/js/jquery-ui/i18n/jquery.ui.datepicker-{$wa->locale()}.js" );
    					{/if}
    				});
    
    				$('input:checked').not('.uk-radio').closest('.accordion-li').addClass('uk-open').find('.uk-accordion-content').removeAttr('hidden');
    			}, 10)
    		}
    	};
    
    	
    	{if $theme_settings.filters_display_mode == 'offcanvas'}
    		$('.filters-toggler, .active-filters-wrapper').on('mousemove tapstart',filters_init);
    	{/if}
    	{if $theme_settings.filters_display_mode == 'sidebar'}
    		filters_init();
    	{/if}
    	
    </script>

    И замените его на код: 

    {if $theme_settings.filters_display_mode == 'offcanvas'}
    <script>
    	var filters_fired = false;
    	function filters_init(){
    		if (filters_fired === false) {
    			filters_fired = true;
    
    			/* alert('{$wa->get}'); */
    
    			setTimeout(() => {
    
    				$('body').append( $('<link rel="stylesheet" type="text/css" />').attr('href', '{$wa_static_url}wa-content/css/jquery-ui/base/jquery.ui.all.css?v={$wa->version(true)}') );
    				$('body').append( $('<link rel="stylesheet" type="text/css" />').attr('href', '{$wa_parent_theme_url}wa-filters.min.css?v={$wa_theme_version}') );
    
    				$.getScript( "{$wa_active_theme_url}shop.filters.min.js" ).done(function(){
    					{$_lang = substr($wa->locale(), 0, 2)}
    					{if $_lang !== "en"}
    						$.getScript( "{$wa_url}wa-content/js/jquery-ui/i18n/jquery.ui.datepicker-{$wa->locale()}.js" );
    					{/if}
    				});
    
    				$('input:checked').not('.uk-radio').closest('.accordion-li').addClass('uk-open').find('.uk-accordion-content').removeAttr('hidden');
    			}, 10)
    		}
    	};
    
    	
    	$('.filters-toggler, .active-filters-wrapper').on('mousemove tapstart',filters_init);
    	
    </script>
    {/if}

    Второй файл находится в теме для приложения Магазин.

    Откройте приложение Магазин -> витрина -> Оформление (Speed Classic) -> шаблоны -> файл head.html
    В этом файле перед строкой: 

    {$plugin_src_location = ''}

    Вставьте код:

    {if $theme_settings.filters_display_mode == 'sidebar' && !empty($filters)}
    <script>
    	$(window).load(function () {
        
    		$.getScript( "{$wa_active_theme_url}shop.filters.min.js" ).done(function(){
    			
    			$('head').append( $('<link rel="stylesheet" type="text/css" />').attr('href', '{$wa_static_url}wa-content/css/jquery-ui/base/jquery.ui.all.css?v={$wa->version(true)}') );
    			$('head').append( $('<link rel="stylesheet" type="text/css" />').attr('href', '{$wa_parent_theme_url}wa-filters.min.css?v={$wa_theme_version}') );
    
    			{$_lang = substr($wa->locale(), 0, 2)}
    			{if $_lang !== "en"}
    				$.getScript( "{$wa_url}wa-content/js/jquery-ui/i18n/jquery.ui.datepicker-{$wa->locale()}.js" );
    			{/if}
    
    			$('input:checked').not('.uk-radio').closest('.accordion-li').addClass('uk-open').find('.uk-accordion-content').removeAttr('hidden');
    		});
        
    	});
    </script>
    {/if}

    • Владимир Сергеев
      Разработчик
      Решение
      5 сентября 2022 22:56

      P.S.
      Данные изменения я внёс в исходник темы. 
      В обновлении это исправление появится. 

  • Владимир Сергеев
    Разработчик
    Решение
    31 августа 2022 20:23

    Здравствуйте, Алексей! 

    У меня всё работает. 

    Проверьте, включен ли у вас JS. 
    Попробуйте открыть сайт в другом браузере. 

  • Алексей
    Решение
    1 сентября 2022 12:51

    В каких-то категориях в Опере работает, но не везде. В остальных браузерах не работает.

    это Microsoft Edge

  • Алексей
    Решение
    1 сентября 2022 12:52

    это Опера

  • Алексей
    Решение
    1 сентября 2022 12:53

    это Гугл

  • Алексей
    Решение
    1 сентября 2022 13:02

    а JS как-то надо дополнительно включать?
    думал, он встроен в браузере по умолчанию

    • Владимир Сергеев
      Разработчик
      Решение
      3 сентября 2022 09:09

      Пришлите пожалуйста ссылки на категории где работает фильтр и на категории, где фильтр не работает. Возможно где-то есть ошибки в скриптах.

  • Алексей
    Решение
    3 сентября 2022 22:01

    Фильтр не работает в категориях:

    Керамический гранит
    Аксима / Axima
    Керама Марацци / Kerama Marazzi

    В других вроде работает, но я не все проверил.

  • Алексей
    Решение
    15 сентября 2022 14:00

    Добрый день Владимир!
    Изменения внес, проблема исчезла. Спасибо огромное!

Добавить ответ
Чтобы добавить комментарий, зарегистрируйтесь или войдите
Мы получаем и обрабатываем персональные данные посетителей нашего сайта в соответствии с официальной политикой.
Если Вы продолжите использовать сайт, мы будем считать, что Вас это устраивает.
Подписывайтесь и получайте скидки!

Узнавайте первым о скидках и специальных предложениях!