Перейти к содержимому


Ошибка Фильтра


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 10 Декабрь 2013 - 11:37

Здравствуйте. Возникла проблема! Если выбрать фильтр по цвету и фильтр по цене то фильтр по цвету сбрасывается!http://al-ver.ru/catalog/Sapogi Выберите любой фильтр а затем выберите диапазон цен, и фильтр который вы выбрали в начале сброситься! как решить эту проблему??

#2 miyako

miyako

    Активный участник

  • Модератоpы
  • 5 372 сообщений

Отправлено 10 Декабрь 2013 - 12:49

Просмотр сообщенияborisovd (10 Декабрь 2013 - 11:37) писал:

Здравствуйте. Возникла проблема! Если выбрать фильтр по цвету и фильтр по цене то фильтр по цвету сбрасывается!http://al-ver.ru/catalog/Sapogi Выберите любой фильтр а затем выберите диапазон цен, и фильтр который вы выбрали в начале сброситься! как решить эту проблему??

Подскажите пожалуйста какой инструкцией Вы пользовались?

#3 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 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 Сake

Сake

    Активный участник

  • Модератоpы
  • 5 979 сообщений

Отправлено 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 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 11 Декабрь 2013 - 02:21

Все работает!) Спасибо огромное!)))

#6 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 11 Декабрь 2013 - 13:21

есть один минус... Вот тут, http://al-ver.ru/catalog/Tufli, поставте цену от 400 до 1000. затем в цвете выберите черный. Минимальная цена будет 510 рублей, хотя это не так. Есть черные туфли и за 400 рублей, например вот http://al-ver.ru/goo...e0147?from=ODE1. Как исправить недочет?

#7 Vaccina

Vaccina

    Активный участник

  • Модераторы
  • 24 353 сообщений

Отправлено 12 Декабрь 2013 - 03:17

Проблема в том что у вас для товара "Туфли 41-MG-19535 (510р.)" задана модификация "Цвет: черный", а для товара "Туфли 18LO-Е0147 (400р.)" задана модификация "Цвета: черный". У данных товаров разные модификации и в результате часть из них не находиться по фильтрам, так как для самой категории задан фильтр только по модификации "Цвет". Вам необходимо привести модификации к общему виду.

#8 borisovd

borisovd

    Активный участник

  • Пользователи
  • PipPipPipPip
  • 370 сообщений

Отправлено 12 Декабрь 2013 - 03:31

Просмотр сообщенияVaccina (12 Декабрь 2013 - 03:17) писал:

Проблема в том что у вас для товара "Туфли 41-MG-19535 (510р.)" задана модификация "Цвет: черный", а для товара "Туфли 18LO-Е0147 (400р.)" задана модификация "Цвета: черный". У данных товаров разные модификации и в результате часть из них не находиться по фильтрам, так как для самой категории задан фильтр только по модификации "Цвет". Вам необходимо привести модификации к общему виду.
Блин...как же я не заметил:( Спасибо огромное:)




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных