0
Ошибка Фильтра
Автор borisovd, 10 дек. 2013 11:37
Сообщений в теме: 7
#1
Отправлено 10 Декабрь 2013 - 11:37
Здравствуйте. Возникла проблема! Если выбрать фильтр по цвету и фильтр по цене то фильтр по цвету сбрасывается!http://al-ver.ru/catalog/Sapogi Выберите любой фильтр а затем выберите диапазон цен, и фильтр который вы выбрали в начале сброситься! как решить эту проблему??
#2
Отправлено 10 Декабрь 2013 - 12:49
borisovd (10 Декабрь 2013 - 11:37) писал:
Здравствуйте. Возникла проблема! Если выбрать фильтр по цвету и фильтр по цене то фильтр по цвету сбрасывается!http://al-ver.ru/catalog/Sapogi Выберите любой фильтр а затем выберите диапазон цен, и фильтр который вы выбрали в начале сброситься! как решить эту проблему??
Подскажите пожалуйста какой инструкцией Вы пользовались?
#3
Отправлено 10 Декабрь 2013 - 13:05
Koderhan (28 Ноябрь 2013 - 19:06) писал:
Попробуйте, предваритеьно создав резервную копию шаблона удалить из файла "Товары" несколько строк.
После кода:
После кода:
<!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) --> {% FOR filter_prop_list %} {filter_prop_list.NAME} <div class="contentTbodySearchFilterBlockValues" style="padding: 1em 0 2em 1em;"> {% FOR values %} <div style="float:left;"> <input type="checkbox" name="form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]" value="1" id="filterPropVal{filter_prop_list.values.ID}" {% IF filter_prop_list.values.CHECKED %}checked="checked"{% ELSEIF filter_prop_list.values.NB_GOODS_FILTERED=0 %}disabled="disabled"{% ENDIF %} > <label style="margin-right: 10px;" for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br /> </div> {% ENDFOR %} </div> {% ENDFOR %} </div>Удалить:
</form>После кода:
<!-- END Если в тарифном плане подключен модуль фильтров по товарам --> {% IF TARIFF_FEATURE_GOODS_FILTERS %}Удалить:
<form action="" method="get" style=" margin-top: -20px;">
#4
Отправлено 11 Декабрь 2013 - 02:12
В данном случае проблема связана с тем что фильтры находятся в разных формах (<form>). Необходимо из 2х форм сделать только одну - общую форму. Попробуйте в шаблоне "Товары" найти код
и заменить его на
<!-- Если в тарифном плане подключен модуль фильтров по товарам --> {% IF TARIFF_FEATURE_GOODS_FILTERS %} <!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам --> {% IFNOT CATEGORY_NAME=Бренды && SHOW_GOODS_FILTERS %} <div class="filters"> <!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь --> <form action="" method="get"> <!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд аккомулятора) --> {% FOR filter_attr_list %} <div class="filter"> {filter_attr_list.NAME}: <select onchange="$(this).attr('name', $(this).find('option:selected').attr('rel'));this.form.submit();" name="{% FOR values %}{% IF filter_attr_list.values.CHECKED %}form[filter][attr][{filter_attr_list.ID}][{filter_attr_list.values.ID}]{% ENDIF %}{% ENDFOR %}"> <option> - все - </option> {% FOR values %} <option value="1" rel="form[filter][attr][{filter_attr_list.ID}][{filter_attr_list.values.ID}]" {% IF filter_attr_list.values.CHECKED %}selected="selected"{% ENDIF %}>{filter_attr_list.values.VALUE}</option> {% ENDFOR %} </select> </div> {% ENDFOR %} <!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) --> {% FOR filter_prop_list %} <div class="filter"> {filter_prop_list.NAME}: <select onchange="$(this).attr('name', $(this).find('option:selected').attr('rel')); this.form.submit();" name="{% FOR values %}{% IF filter_prop_list.values.CHECKED %}form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]{% ENDIF %}{% ENDFOR %}"> <option> - все - </option> {% FOR values %} <option value="1" rel="form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]" {% IF filter_prop_list.values.CHECKED %}selected="selected"{% ENDIF %}>{filter_prop_list.values.VALUE}</option> {% ENDFOR %} </select> </div> {% ENDFOR %} <div class="clear"></div> </form> </div> {% ENDIF %} {% IF CATEGORY_NAME=Бренды && SHOW_GOODS_FILTERS%} <div class="filters"> <form action="" method="get"> <div> <!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд батареи) --> <h3> Выберите нужный бренд! </h3> {% FOR filter_attr_list %} <br> <div class="contentTbodySearchFilterBlockValues" style="padding: 1em 0 2em 1em;"> {% FOR values %} <div style="float:left;"> <input type="checkbox" name="form[filter][attr][{filter_attr_list.ID}][{filter_attr_list.values.ID}]" value="1" id="filterAttrVal{filter_attr_list.values.ID}" {% IF filter_attr_list.values.CHECKED %}checked="checked"{% ELSEIF filter_attr_list.values.NB_GOODS_FILTERED=0 %}disabled="disabled"{% ENDIF %} /> <label style="margin-right: 10px;" for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br /> </div> {% ENDFOR %} </div> {% ENDFOR %} <!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) --> {% FOR filter_prop_list %} {filter_prop_list.NAME} <div class="contentTbodySearchFilterBlockValues" style="padding: 1em 0 2em 1em;"> {% FOR values %} <div style="float:left;"> <input type="checkbox" name="form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]" value="1" id="filterPropVal{filter_prop_list.values.ID}" {% IF filter_prop_list.values.CHECKED %}checked="checked"{% ELSEIF filter_prop_list.values.NB_GOODS_FILTERED=0 %}disabled="disabled"{% ENDIF %} > <label style="margin-right: 10px;" for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br /> </div> {% ENDFOR %} </div> {% ENDFOR %} </div> </form> </div> {% ENDIF %} {% ENDIF %} <!-- END Если в тарифном плане подключен модуль фильтров по товарам --> {% IF TARIFF_FEATURE_GOODS_FILTERS %} <form action="" method="get" style=" margin-top: -20px;"> <style> .contentTbodySearchPriceFilterBlock {padding: 0 1em 0 1.4em;text-align:center;} .goodsFilterPriceInfo {padding:1em 0 0.5em;margin-left:-670px;} .goodsFilterPriceInfo input {width:45px;} .goodsFilterPriceRangePointers {height: 16px;font-size: 0.9em;color: #CCC;width: 100%;overflow: visible;} .goodsFilterPriceRangePointers .min {float: left; margin-left: -7px; } .goodsFilterPriceRangePointers .max {float: right; margin-right: -8px;} .goodsFilterPriceSubmit {padding: 0.5em 0 0.4em;display:none;} </style> <!-- Если есть возможность фильтрации товаров по ценам --> {%IFNOT CATEGORY_NAME=Бренды%} {% IF SHOW_GOODS_PRICE_FILTERS %} <br /><h4 class="contentTbodyCatalogHeader noBorder">Цена</h4> <div class="contentTbodySearchPriceFilterBlock cornerAll"> <div class="goodsFilterPriceRangePointers"><div class="min">{GOODS_FILTER_MIN_AVAILABLE_PRICE}</div><div class="max">{GOODS_FILTER_MAX_AVAILABLE_PRICE}</div></div> <div id="goods-filter-price-slider"></div> <div class="goodsFilterPriceInfo"> от <input id="goods-filter-min-price" type="text" name="form[filter][price][min]" value="{% IF GOODS_FILTER_MIN_PRICE %}{GOODS_FILTER_MIN_PRICE}{% ELSE %}{GOODS_FILTER_MIN_AVAILABLE_PRICE}{% ENDIF %}" autocomplete="off" /> до <input id="goods-filter-max-price" type="text" name="form[filter][price][max]" value="{% IF GOODS_FILTER_MAX_PRICE %}{GOODS_FILTER_MAX_PRICE}{% ELSE %}{GOODS_FILTER_MAX_AVAILABLE_PRICE}{% ENDIF %}" autocomplete="off" /> </div> <script type="text/javascript"> $(function() { var // Минимальное значение цены для фильтра priceFilterMinAvailable = parseInt($('.goodsFilterPriceRangePointers .min').text()) // Максимальное значение цены для фильтра , priceFilterMaxAvailable = parseInt($('.goodsFilterPriceRangePointers .max').text()) // Максимальное значение цены для фильтра , priceSliderBlock = $('#goods-filter-price-slider') // Поле ввода текущего значения цены "От" , priceInputMin = $("#goods-filter-min-price") // Поле ввода текущего значения цены "До" , priceInputMax = $("#goods-filter-max-price") // Блок с кнопкой, которую есть смысл нажимать только тогда, когда изменялся диапазон цен. , priceSubmitButtonBlock = $(".goodsFilterPriceSubmit") ; // Слайдер, который используется для удобства выбора цены priceSliderBlock.slider({ range: true, min: priceFilterMinAvailable, max: priceFilterMaxAvailable, values: [ parseInt($('#goods-filter-min-price').val()) , parseInt($('#goods-filter-max-price').val()) ], slide: function(event, ui) { priceInputMin.val(ui.values[ 0 ]); priceInputMax.val(ui.values[ 1 ]); priceSubmitButtonBlock.show(); } }); // При изменении минимального значения цены priceInputMin.keyup(function() { var newVal = parseInt($(this).val()); if (newVal < priceFilterMinAvailable) { newVal = priceFilterMinAvailable; } priceSliderBlock.slider("values", 0, newVal); priceSubmitButtonBlock.show(); }); // При изменении максимального значения цены priceInputMax.keyup(function() { var newVal = parseInt($(this).val()); if (newVal > priceFilterMaxAvailable) { newVal = priceFilterMaxAvailable; } priceSliderBlock.slider("values", 1, newVal); priceSubmitButtonBlock.show(); }); }); </script> <div class="goodsFilterPriceSubmit" style="display: block;margin-right: 700px;"> <input type="submit" value="Показать" /> </div> </div> {% ENDIF %} {%ENDIF%} <!-- END Если есть возможность фильтрации товаров по ценам --> </form> {% ENDIF %} <!-- END Если в тарифном плане подключен модуль фильтров по товарам --> <table> <!-- Фильтры показываются только если есть товары в категории --> {% IFNOT goods_empty %} <!-- Дополнительная навигация для работы со списком товаров --> <tr> </tr> <tr style="{% IF CATEGORY_NAME=Бренды && goods_filters_empty=1 %}display:none;{% ENDIF %}">
и заменить его на
<!-- Если в тарифном плане подключен модуль фильтров по товарам --> {% IF TARIFF_FEATURE_GOODS_FILTERS %} <!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь --> <form action="" method="get"> <!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам --> {% IFNOT CATEGORY_NAME=Бренды && SHOW_GOODS_FILTERS %} <div class="filters"> <!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд аккомулятора) --> {% FOR filter_attr_list %} <div class="filter"> {filter_attr_list.NAME}: <select onchange="$(this).attr('name', $(this).find('option:selected').attr('rel'));this.form.submit();" name="{% FOR values %}{% IF filter_attr_list.values.CHECKED %}form[filter][attr][{filter_attr_list.ID}][{filter_attr_list.values.ID}]{% ENDIF %}{% ENDFOR %}"> <option> - все - </option> {% FOR values %} <option value="1" rel="form[filter][attr][{filter_attr_list.ID}][{filter_attr_list.values.ID}]" {% IF filter_attr_list.values.CHECKED %}selected="selected"{% ENDIF %}>{filter_attr_list.values.VALUE}</option> {% ENDFOR %} </select> </div> {% ENDFOR %} <!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) --> {% FOR filter_prop_list %} <div class="filter"> {filter_prop_list.NAME}: <select onchange="$(this).attr('name', $(this).find('option:selected').attr('rel')); this.form.submit();" name="{% FOR values %}{% IF filter_prop_list.values.CHECKED %}form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]{% ENDIF %}{% ENDFOR %}"> <option> - все - </option> {% FOR values %} <option value="1" rel="form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]" {% IF filter_prop_list.values.CHECKED %}selected="selected"{% ENDIF %}>{filter_prop_list.values.VALUE}</option> {% ENDFOR %} </select> </div> {% ENDFOR %} <div class="clear"></div> </div> {% ENDIF %} {% IF CATEGORY_NAME=Бренды && SHOW_GOODS_FILTERS%} <div class="filters"> <div> <!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд батареи) --> <h3> Выберите нужный бренд! </h3> {% FOR filter_attr_list %} <br> <div class="contentTbodySearchFilterBlockValues" style="padding: 1em 0 2em 1em;"> {% FOR values %} <div style="float:left;"> <input type="checkbox" name="form[filter][attr][{filter_attr_list.ID}][{filter_attr_list.values.ID}]" value="1" id="filterAttrVal{filter_attr_list.values.ID}" {% IF filter_attr_list.values.CHECKED %}checked="checked"{% ELSEIF filter_attr_list.values.NB_GOODS_FILTERED=0 %}disabled="disabled"{% ENDIF %} /> <label style="margin-right: 10px;" for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br /> </div> {% ENDFOR %} </div> {% ENDFOR %} <!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) --> {% FOR filter_prop_list %} {filter_prop_list.NAME} <div class="contentTbodySearchFilterBlockValues" style="padding: 1em 0 2em 1em;"> {% FOR values %} <div style="float:left;"> <input type="checkbox" name="form[filter][prop][{filter_prop_list.ID}][{filter_prop_list.values.ID}]" value="1" id="filterPropVal{filter_prop_list.values.ID}" {% IF filter_prop_list.values.CHECKED %}checked="checked"{% ELSEIF filter_prop_list.values.NB_GOODS_FILTERED=0 %}disabled="disabled"{% ENDIF %} > <label style="margin-right: 10px;" for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br /> </div> {% ENDFOR %} </div> {% ENDFOR %} </div> </div> {% ENDIF %} <style> .contentTbodySearchPriceFilterBlock {padding: 0 1em 0 1.4em;text-align:center;} .goodsFilterPriceInfo {padding:1em 0 0.5em;margin-left:-670px;} .goodsFilterPriceInfo input {width:45px;} .goodsFilterPriceRangePointers {height: 16px;font-size: 0.9em;color: #CCC;width: 100%;overflow: visible;} .goodsFilterPriceRangePointers .min {float: left; margin-left: -7px; } .goodsFilterPriceRangePointers .max {float: right; margin-right: -8px;} .goodsFilterPriceSubmit {padding: 0.5em 0 0.4em;display:none;} </style> <!-- Если есть возможность фильтрации товаров по ценам --> {%IFNOT CATEGORY_NAME=Бренды%} {% IF SHOW_GOODS_PRICE_FILTERS %} <h4 class="contentTbodyCatalogHeader noBorder" style="margin-top: -20px;">Цена</h4> <div class="contentTbodySearchPriceFilterBlock cornerAll"> <div class="goodsFilterPriceRangePointers"><div class="min">{GOODS_FILTER_MIN_AVAILABLE_PRICE}</div><div class="max">{GOODS_FILTER_MAX_AVAILABLE_PRICE}</div></div> <div id="goods-filter-price-slider"></div> <div class="goodsFilterPriceInfo"> от <input id="goods-filter-min-price" type="text" name="form[filter][price][min]" value="{% IF GOODS_FILTER_MIN_PRICE %}{GOODS_FILTER_MIN_PRICE}{% ELSE %}{GOODS_FILTER_MIN_AVAILABLE_PRICE}{% ENDIF %}" autocomplete="off" /> до <input id="goods-filter-max-price" type="text" name="form[filter][price][max]" value="{% IF GOODS_FILTER_MAX_PRICE %}{GOODS_FILTER_MAX_PRICE}{% ELSE %}{GOODS_FILTER_MAX_AVAILABLE_PRICE}{% ENDIF %}" autocomplete="off" /> </div> <script type="text/javascript"> $(function() { var // Минимальное значение цены для фильтра priceFilterMinAvailable = parseInt($('.goodsFilterPriceRangePointers .min').text()) // Максимальное значение цены для фильтра , priceFilterMaxAvailable = parseInt($('.goodsFilterPriceRangePointers .max').text()) // Максимальное значение цены для фильтра , priceSliderBlock = $('#goods-filter-price-slider') // Поле ввода текущего значения цены "От" , priceInputMin = $("#goods-filter-min-price") // Поле ввода текущего значения цены "До" , priceInputMax = $("#goods-filter-max-price") // Блок с кнопкой, которую есть смысл нажимать только тогда, когда изменялся диапазон цен. , priceSubmitButtonBlock = $(".goodsFilterPriceSubmit") ; // Слайдер, который используется для удобства выбора цены priceSliderBlock.slider({ range: true, min: priceFilterMinAvailable, max: priceFilterMaxAvailable, values: [ parseInt($('#goods-filter-min-price').val()) , parseInt($('#goods-filter-max-price').val()) ], slide: function(event, ui) { priceInputMin.val(ui.values[ 0 ]); priceInputMax.val(ui.values[ 1 ]); priceSubmitButtonBlock.show(); } }); // При изменении минимального значения цены priceInputMin.keyup(function() { var newVal = parseInt($(this).val()); if (newVal < priceFilterMinAvailable) { newVal = priceFilterMinAvailable; } priceSliderBlock.slider("values", 0, newVal); priceSubmitButtonBlock.show(); }); // При изменении максимального значения цены priceInputMax.keyup(function() { var newVal = parseInt($(this).val()); if (newVal > priceFilterMaxAvailable) { newVal = priceFilterMaxAvailable; } priceSliderBlock.slider("values", 1, newVal); priceSubmitButtonBlock.show(); }); }); </script> <div class="goodsFilterPriceSubmit" style="display: block;margin-right: 700px;"> <input type="submit" value="Показать" /> </div> </div> {% ENDIF %} {%ENDIF%} <!-- END Если есть возможность фильтрации товаров по ценам --> </form> {% ENDIF %} <!-- END Если в тарифном плане подключен модуль фильтров по товарам --> <table> <!-- Фильтры показываются только если есть товары в категории --> {% IFNOT goods_empty %} <!-- Дополнительная навигация для работы со списком товаров --> <tr> </tr> <tr style="{% IF CATEGORY_NAME=Бренды && goods_filters_empty=1 %}display:none;{% ENDIF %}">
#5
Отправлено 11 Декабрь 2013 - 02:21
Все работает!) Спасибо огромное!)))
#6
Отправлено 11 Декабрь 2013 - 13:21
есть один минус... Вот тут, http://al-ver.ru/catalog/Tufli, поставте цену от 400 до 1000. затем в цвете выберите черный. Минимальная цена будет 510 рублей, хотя это не так. Есть черные туфли и за 400 рублей, например вот http://al-ver.ru/goo...e0147?from=ODE1. Как исправить недочет?
#7
Отправлено 12 Декабрь 2013 - 03:17
Проблема в том что у вас для товара "Туфли 41-MG-19535 (510р.)" задана модификация "Цвет: черный", а для товара "Туфли 18LO-Е0147 (400р.)" задана модификация "Цвета: черный". У данных товаров разные модификации и в результате часть из них не находиться по фильтрам, так как для самой категории задан фильтр только по модификации "Цвет". Вам необходимо привести модификации к общему виду.
#8
Отправлено 12 Декабрь 2013 - 03:31
Vaccina (12 Декабрь 2013 - 03:17) писал:
Проблема в том что у вас для товара "Туфли 41-MG-19535 (510р.)" задана модификация "Цвет: черный", а для товара "Туфли 18LO-Е0147 (400р.)" задана модификация "Цвета: черный". У данных товаров разные модификации и в результате часть из них не находиться по фильтрам, так как для самой категории задан фильтр только по модификации "Цвет". Вам необходимо привести модификации к общему виду.
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных