Кейс №9. Как сбросить фильтры. Часть 2
- Кейсы
- Кастомизация
- Кейс №9. Как сбросить фильтры. Часть 2
О чем здесь?
В разделе уроков есть материал по настройке фильтров, которые позволяет внедрить удобные инструменты подбора товаров.
Также ранее в блоге рассматривался вопрос сброса выпадающих списков.
В этой заметке мы соберем все вместе и решим вопрос со сбросом фильтров.
Скрипт сброса фильтров
Вот сам скрипт:
$(document).ready(function(){ // здесь будет список id фильтров, которые надо сбросить var fArr = [], // Функция сброса фильтров resetFilters = function(i, arr){ $('.reset-filters').attr("disabled", "disabled"); // "выключаем" кнопку сброса // Отправить запрос на сброс фильтров для всех полей в fArr if (i<arr.length-1) { _uPostForm('',{type:"POST",url:location.href,data:{"mode":"filter", "field":arr[i], "value":""}, success: function(){resetFilters(i+1, arr);}}); } else { _uPostForm('',{type:"POST",url:location.href,data:{"mode":"filter", "field":arr[i], "value":""}}); } }, // Функция удаление элемента из массива по имени delFArr = function(str){ if(!str){return false}; for(j=0;j<fArr.length;j++){ if(fArr[j] == str) { fArr.splice(j,1); } } }, // Функция проверки элемента на вхождение в массив по имени isInFArr = function(str){ if(!str){return false}; for(j=0;j<fArr.length;j++){ if(fArr[j] == str) { return true } } } // Добавить функцию-обработчик (определена ниже) кнопка с классом "reset-filters" <button class="reset-filters" disabled="disabled">Сбросить фильтры</button> $('.reset-filters').live('click', function(){resetFilters(0,fArr);}); // Проверить выпадающие списки и поля цен на наличие примененных фильтров $('.flist-select, .price_filter').each(function(elem){ if ($(this).val() != 0) { // Один из фильтров активен $('.reset-filters').removeAttr('disabled'); if($(this).attr("id").split("-")[2]) { fArr[fArr.length] = [$(this).attr("id").split("-")[2]] } else { if(!isInFArr('price')){fArr[fArr.length] = 'price';} } } }); // Проверить фильтры списки $('.flist-values>.active').each(function(){ if($(this).text() != $(this).parent().children(':first-child').text()) { $('.reset-filters').removeAttr('disabled'); fArr[fArr.length] = $(this).parent().attr("id").split("-")[2]; } }); // Обработчик для выпадающих списков $(".flist-select").live("change",function(){ if(this.value != 0) { $(".reset-filters").removeAttr("disabled"); // Активировать кнопку, если фильтр применен if(!isInFArr($(this).parent().attr("id").split("-")[2])){fArr[fArr.length] = $(this).parent().attr("id").split("-")[2];} } else { delFArr($(this).attr("id").split("-")[2]); if(fArr.length == 0){$(".reset-filters").attr('disabled','disabled');} } }); // Обработчик набора ссылок $('.flist-values>a').live('click',function(){ if($(this).text() != $(this).parent().children(':first-child').text()) { $(".reset-filters").removeAttr("disabled"); if(!isInFArr($(this).parent().attr("id").split("-")[2])){fArr[fArr.length] = $(this).parent().attr("id").split("-")[2];} } else { delFArr($(this).parent().attr("id").split("-")[2]); if(fArr.length == 0){$(".reset-filters").attr('disabled','disabled');} } }); // Обработчик кнопки фильтровать по ценам $('button[onclick="setPriceFilter();"]').live('click',function(){ $(".reset-filters").removeAttr("disabled"); if(!isInFArr('price')){fArr[fArr.length] = 'price';} }); // Системный сброс фильтры цены $('button[onclick="cancelPriceFilter();"]').live('click',function(){ if(fArr.length == 0){$(".reset-filters").attr('disabled','disabled');} delFArr('price'); }); });
Сюда включены фильтры типа "Выпадающие списки", "Набор ссылок" и фильтр по цене.
Подключаем скрипт
Скачайте файл reset-filters.js и загрузите его на свой сайт с помощью файлового менеджера.
Зайдите в панель управления: Дизайн - Управление дизайном (шаблоны) - Каталог товаров и в коде шаблона перед </body>
разместите следующее:
<?if $FILTER_SELECTOR$?> <script src="/путь к файлу"></script> <?endif?>
Размещение кнопки сброса фильтров
В этой версии скрипта необходимо самостоятельно разместить кнопку сброса фильтров в том месте, где захочется, а также украсить ее по своему усмотрению. Главное выполнить одно условие: элемент, который будет сбрасывать фильтры должен иметь класс reset-filters. Пример:
<button class="reset-filters" disabled="disabled">Сбросить фильтры</button>
Чтобы разместить кнопку перейдите в Панель управления - Дизайн - Управление дизайном (шаблоны). Где-то рядом с $FILTER_SELECTOR$
добавьте кнопку.
Статьи по теме
- Кейс №8. Как сбросить фильтры товаров
- Правильная внутренняя перелинковка страниц сайта
- Печатная форма страницы товара и не только
- Сниппеты Яндекс - иконки социальных сетей в результатах поиска
- Кейс №4. Нужна ли плавная подгрузка товаров?
Обсуждение
Всего комментариев: 1