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


Добавлены Фильтры По Ценам Товаров

обновления фильтры uptime

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

#1 support

support

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

  • Модераторы
  • 3 649 сообщений
  • ГородМосква

Отправлено 12 Ноябрь 2013 - 03:35

Последние дни работа касалась стабильности работы системы. Были исправлены различные ошибки, доработаны DNS сервера, каждый из сайтов на платформе теперь размещается в 3х датацентрах, что обеспечивает его высокую стабильность и доступность. Для возможности отражения крупных DDOS атак, а также для того чтобы легко пройти пики предновогодних распродаж увеличены вычислительные мощности системы, в одной из соседних веток нашего форума я подробно описывал, что конкретно изменилось технически, какие недочёты мы исправили. Этот пост немного о другом. Есть и новость которую хочется рассказать, во первых потому что её ждали достаточно долго, а во вторых потому что встроить её автоматически во все шаблоны нам как мы не старались не удалось и было бы полезным разместить информацию о том как этот модуль встроить в шаблон в одном месте.

Собственно новый модуль выполняет функцию фильтрации товаров по диапазону цен. Выглядит он примерно так:
priceFilter.png

Мы его уже встроили в шаблонах Сияние, Лайт, Мокко и Пластик, если установить из из галереи, можно протестировать механизм его работы, не вдаваясь в HTML коды. В ближайшие дни мы добавим модуль в остальные шаблоны, код обновлений добавим в этой ветке форума. Также прошу если есть какие-либо замечания по работе модуля - не стесняйтесь, поделитесь мнением, что бы Вам хотелось в нём доработать.


Итак, к кодам. Для добавления модуля на витрину магазина достаточно сделать следующее:

Для шаблона "Пластик"
найти в редакторе шаблонов в файле "HTML" код:
<!-- Если в тарифном плане подключен модуль фильтров по товарам -->
{% IF TARIFF_FEATURE_GOODS_FILTERS %}
<!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
{% IF SHOW_GOODS_FILTERS %}
<div class="block">
	 <div class="blocktitle bluesmall">
		 Фильтры
	 </div>
	 <div class="blockmain fnt12n">
	 <ul class="filter">
		 <!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь -->
		 <form action="" method="get">
		 <div class="contentTbodySearchFilterBlock cornerAll">
			 <!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд аккомулятора) -->
			 {% FOR filter_attr_list %}
			 <span class="fnt12b color contentTbodySearchFilterBlockHeader">{filter_attr_list.NAME}</span>
			 <div class="fnt11i contentTbodySearchFilterBlockValues">
			 {% FOR values %}
				 <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 for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} {% IF filter_attr_list.values.NB_GOODS_FILTERED > 0 %}({filter_attr_list.values.NB_GOODS_FILTERED}){% ENDIF %}</label><br />
			 {% ENDFOR %}
			 </div>
			 {% ENDFOR %}
			 <!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
			 {% FOR filter_prop_list %}
			 <span class="fnt12b color contentTbodySearchFilterBlockHeader">{filter_prop_list.NAME}</span>
			 <div class="fnt11i contentTbodySearchFilterBlockValues">
			 {% FOR values %}
				 <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 for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} {% IF filter_prop_list.values.NB_GOODS_FILTERED > 0 %}({filter_prop_list.values.NB_GOODS_FILTERED}){% ENDIF %}</label><br />
			 {% ENDFOR %}
			 </div>
			 {% ENDFOR %}
		 </div>
		 </form>
	 </ul>
	 </div>
	 <div class="blockbottom"></div>
</div>
{% ENDIF %}
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль фильтров по товарам -->


и заменить его на следующий:
<!-- Если в тарифном плане подключен модуль фильтров по товарам -->
{% IF TARIFF_FEATURE_GOODS_FILTERS %}
<!-- Форма фильтрации отправляет всегда на ту же страницу, на которой находится пользователь -->
<form action="" method="get">
<!-- Если есть возможность фильтрации товаров по ценам -->
{% IF SHOW_GOODS_PRICE_FILTERS %}
	 <style>
	 .contentTbodySearchPriceFilterBlock {padding: 0 1em 0 1.4em;text-align:center;}
	 .goodsFilterPriceInfo {padding:1em 0 0.5em;}
	 .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>
	 <div class="block">
	 <div class="blocktitle bluesmall">
		 Цена
	 </div>
	 <div class="blockmain fnt12n">
		 <ul class="filter">
		 <div class="contentTbodySearchPriceFilterBlock cornerAll txtalgncnt">
			 <!-- Фильтры по цене -->
			 <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>
			 <div class="goodsFilterPriceSubmit">
			 <button class="whtblue fnt12n" type="submit">Показать</button>
			 </div>
		 </div>
		 </ul>
	 </div>
	 <div class="blockbottom"></div>
	 </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" )
		 ;
		
		 // Изменяет размер ячеек с ценой, т.к. у них нет рамок, есть смысл менять размеры полей ввода, чтобы они выглядили как текст
		 function priceInputsChangeWidthByChars() {
		 priceInputMin.css('width', (priceInputMin.val().length*7 + 3) + 'px');
		 priceInputMax.css('width', (priceInputMax.val().length*7 + 3) + 'px');
		 }
		
		 // Слайдер, который используется для удобства выбора цены
		 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();
			 priceInputsChangeWidthByChars();
		 }
		 });
		
		 // При изменении минимального значения цены
		 priceInputMin.keyup(function(){
		 var newVal = parseInt($(this).val());
		 if(newVal < priceFilterMinAvailable) {
			 newVal = priceFilterMinAvailable;
		 }
		 priceSliderBlock.slider("values", 0, newVal);
		 priceSubmitButtonBlock.show();
		 priceInputsChangeWidthByChars();
		 });
		
		 // При изменении максимального значения цены
		 priceInputMax.keyup(function(){
		 var newVal = parseInt($(this).val());
		 if(newVal > priceFilterMaxAvailable) {
			 newVal = priceFilterMaxAvailable;
		 }
		 priceSliderBlock.slider("values", 1, newVal);
		 priceSubmitButtonBlock.show();
		 priceInputsChangeWidthByChars();
		 });
		 // Обновить размеры полей ввода диапазона цен
		 priceInputsChangeWidthByChars();
	 });
	 </script>
{% ENDIF %}
<!-- END Если есть возможность фильтрации товаров по ценам -->
<!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
{% IF SHOW_GOODS_FILTERS %}
<div class="block">
	 <div class="blocktitle bluesmall">
	 Фильтры
	 </div>
	 <div class="blockmain fnt12n">
	 <ul class="filter">
		 <div class="contentTbodySearchFilterBlock cornerAll">
		 <!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд аккомулятора) -->
		 {% FOR filter_attr_list %}
			 <span class="fnt12b color contentTbodySearchFilterBlockHeader">{filter_attr_list.NAME}</span>
			 <div class="fnt11i contentTbodySearchFilterBlockValues">
			 {% FOR values %}
				 <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 for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} {% IF filter_attr_list.values.NB_GOODS_FILTERED > 0 %}({filter_attr_list.values.NB_GOODS_FILTERED}){% ENDIF %}</label><br />
			 {% ENDFOR %}
			 </div>
		 {% ENDFOR %}
		 <!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
		 {% FOR filter_prop_list %}
			 <span class="fnt12b color contentTbodySearchFilterBlockHeader">{filter_prop_list.NAME}</span>
			 <div class="fnt11i contentTbodySearchFilterBlockValues">
			 {% FOR values %}
				 <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 for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} {% IF filter_prop_list.values.NB_GOODS_FILTERED > 0 %}({filter_prop_list.values.NB_GOODS_FILTERED}){% ENDIF %}</label><br />
			 {% ENDFOR %}
			 </div>
		 {% ENDFOR %}
		 </div>
	 </ul>
	 </div>
	 <div class="blockbottom"></div>
</div>
{% ENDIF %}
</form>
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль фильтров по товарам -->


Для шаблона "Мокко"
найти в редакторе шаблонов в файле "HTML" код:
<!-- Если в тарифном плане подключен модуль фильтров по товарам -->
{% IF TARIFF_FEATURE_GOODS_FILTERS %}
<form action="" method="get">
<!-- Если есть возможность фильтрации товаров по ценам -->
{% IF SHOW_GOODS_PRICE_FILTERS %}
	 <br /><h4 class="contentTbodyCatalogHeader noBorder">Цена</h4>
	 <div class="contentTbodySearchPriceFilterBlock cornerAll">
	 <style>
		 .priceFilterInput {width:60px; border:1px solid #E2E2E2;padding:2px 3px;margin-right:0.3em;}
	 </style>
	 <!-- Фильтры по цене -->
	 <div class="fnt11i contentTbodySearchFilterBlockValues">
		 от <input class="priceFilterInput" type="text" name="form[filter][price][min]" value="{% IF GOODS_FILTER_MIN_PRICE %}{GOODS_FILTER_MIN_PRICE}{% ELSE %}{GOODS_FILTER_MIN_AVAILABLE_PRICE}{% ENDIF %}" />
		 до <input class="priceFilterInput" type="text" name="form[filter][price][max]" value="{% IF GOODS_FILTER_MAX_PRICE %}{GOODS_FILTER_MAX_PRICE}{% ELSE %}{GOODS_FILTER_MAX_AVAILABLE_PRICE}{% ENDIF %}" />
	 </div>
	 <div style="padding: 0.5em 0 0.4em;">
		 <button class="whtblue fnt12n" type="submit">Показать</button>
	 </div>
	 </div>
{% ENDIF %}
<!-- END Если есть возможность фильтрации товаров по ценам -->
<!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
{% IF SHOW_GOODS_FILTERS %}
	 <br /><h4 class="contentTbodyCatalogHeader noBorder">Фильтры по товарам</h4>
	 <!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь -->
	 <div class="contentTbodySearchFilterBlock cornerAll">
		 <!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд батареи) -->
		 {% FOR filter_attr_list %}
		 <em>{filter_attr_list.NAME}</em>
		 <div class="contentTbodySearchFilterBlockValues">
		 {% FOR values %}
			 <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 for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br />
		 {% ENDFOR %}
		 </div>
		 {% ENDFOR %}
		 <!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
		 {% FOR filter_prop_list %}
		 <em>{filter_prop_list.NAME}</em>
		 <div class="contentTbodySearchFilterBlockValues">
		 {% FOR values %}
			 <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 for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br />
		 {% ENDFOR %}
		 </div>
		 {% ENDFOR %}
	 </div>
{% ENDIF %}
</form>
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль фильтров по товарам -->


и заменить его на:
{% IF TARIFF_FEATURE_GOODS_FILTERS %}
<form action="" method="get">
<style>
	 .contentTbodySearchPriceFilterBlock {padding: 0 1em 0 1.4em;text-align:center;}
	 .goodsFilterPriceInfo {padding:1em 0 0.5em;margin-left:-5px;}
	 .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>
<!-- Если есть возможность фильтрации товаров по ценам -->
{% 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">
		 <input type="submit" value="Показать" />
	 </div>
	 </div>
{% ENDIF %}
<!-- END Если есть возможность фильтрации товаров по ценам -->
<!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
{% IF SHOW_GOODS_FILTERS %}
	 <br /><h4 class="contentTbodyCatalogHeader noBorder">Фильтры по товарам</h4>
	 <!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь -->
	 <div class="contentTbodySearchFilterBlock cornerAll">
		 <!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд батареи) -->
		 {% FOR filter_attr_list %}
		 <em>{filter_attr_list.NAME}</em>
		 <div class="contentTbodySearchFilterBlockValues">
		 {% FOR values %}
			 <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 for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br />
		 {% ENDFOR %}
		 </div>
		 {% ENDFOR %}
		 <!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
		 {% FOR filter_prop_list %}
		 <em>{filter_prop_list.NAME}</em>
		 <div class="contentTbodySearchFilterBlockValues">
		 {% FOR values %}
			 <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 for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br />
		 {% ENDFOR %}
		 </div>
		 {% ENDFOR %}
	 </div>
{% ENDIF %}
</form>
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль фильтров по товарам -->





Для шаблона "Лайт"
найти в редакторе шаблонов в файле "HTML" код:
<!-- Если в тарифном плане подключен модуль фильтров по товарам -->
{% IF TARIFF_FEATURE_GOODS_FILTERS %}

<!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
{% IF SHOW_GOODS_FILTERS %}
<br /><h4 class="contentTbodyCatalogHeader noBorder">Фильтры по товарам</h4>

<!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь -->
<form action="" method="get">
<div class="contentTbodySearchFilterBlock cornerAll">

<!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд батареи) -->
{% FOR filter_attr_list %}
<em>{filter_attr_list.NAME}</em>
<div class="contentTbodySearchFilterBlockValues">
{% FOR values %}
<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 for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br />
{% ENDFOR %}
</div>
{% ENDFOR %}

<!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
{% FOR filter_prop_list %}
<em>{filter_prop_list.NAME}</em>
<div class="contentTbodySearchFilterBlockValues">
{% FOR values %}
<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 for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br />
{% ENDFOR %}
</div>
{% ENDFOR %}
</div>
</form>
{% ENDIF %}
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль фильтров по товарам -->

и заменить его на:
{% IF TARIFF_FEATURE_GOODS_FILTERS %}
<style>
/* Фильтры по цене в колонке меню */
.contentTbodySearchPriceFilterBlock {padding:0 2em 0 2em;text-align:center;}
.goodsFilterPriceInfo {padding:1em 0 0.5em;margin-left:-5px;}
.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>
<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>

<form action="" method="get">
<!-- Если есть возможность фильтрации товаров по ценам -->
{% 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>
<div class="goodsFilterPriceSubmit">
<input type="submit" value="Показать" />
</div>
</div>
{% ENDIF %}
<!-- END Если есть возможность фильтрации товаров по ценам -->

<!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
{% IF SHOW_GOODS_FILTERS %}
<br /><h4 class="contentTbodyCatalogHeader noBorder">Фильтры по товарам</h4>
<!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь -->
<div class="contentTbodySearchFilterBlock cornerAll">
<!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд батареи) -->
{% FOR filter_attr_list %}
<em>{filter_attr_list.NAME}</em>
<div class="contentTbodySearchFilterBlockValues">
{% FOR values %}
<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 for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br />
{% ENDFOR %}
</div>
{% ENDFOR %}
<!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
{% FOR filter_prop_list %}
<em>{filter_prop_list.NAME}</em>
<div class="contentTbodySearchFilterBlockValues">
{% FOR values %}
<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 for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br />
{% ENDFOR %}
</div>
{% ENDFOR %}
</div>
{% ENDIF %}
<!-- END Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
</form>
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль фильтров по товарам -->





Для шаблона "Сияние"
найти в редакторе шаблонов в файле "HTML" код:
<!-- Если в тарифном плане подключен модуль фильтров по товарам -->
{% IF TARIFF_FEATURE_GOODS_FILTERS %}
<!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
{% IF SHOW_GOODS_FILTERS %}
<li class="goods_filters"><br /><h2>Фильтры</h2>
<ul>
<!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь -->
<form action="" method="get">
<div class="contentTbodySearchFilterBlock cornerAll">

<!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд батареи) -->
{% FOR filter_attr_list %}
<span class="contentTbodySearchFilterBlockHeader">{filter_attr_list.NAME}</span>
<div class="contentTbodySearchFilterBlockValues">
{% FOR values %}
<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 for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br />
{% ENDFOR %}
</div>
{% ENDFOR %}

<!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
{% FOR filter_prop_list %}
<span class="contentTbodySearchFilterBlockHeader">{filter_prop_list.NAME}</span>
<div class="contentTbodySearchFilterBlockValues">
{% FOR values %}
<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 for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br />
{% ENDFOR %}
</div>
{% ENDFOR %}
</div>
</form>
</ul>
</li>
{% ENDIF %}
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль фильтров по товарам -->

и заменить его на:
<!-- Если в тарифном плане подключен модуль фильтров по товарам -->
{% IF TARIFF_FEATURE_GOODS_FILTERS %}
<form action="" method="get">
<!-- Если есть возможность фильтрации товаров по ценам -->
{% IF SHOW_GOODS_PRICE_FILTERS %}
<style>
#goods-filter-price-slider {font-size:10px;}
.contentTbodySearchPriceFilterBlock {padding: 0.5em 1em 0 1.05em;text-align:center;}
.goodsFilterPriceInfo {padding:0.3em 0 0em;color:#999;font-size:0.9em;}
.goodsFilterPriceInfo input {width:45px;border: 0px;color:#999;}
.goodsFilterPriceRangePointers {height: 16px;font-size: 0.7em;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>
<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" )
;
// Изменяет размер ячеек с ценой, т.к. у них нет рамок, есть смысл менять размеры полей ввода, чтобы они выглядили как текст
function priceInputsChangeWidthByChars() {
priceInputMin.css('width', (priceInputMin.val().length*7 + 3) + 'px');
priceInputMax.css('width', (priceInputMax.val().length*7 + 3) + 'px');
}
// Слайдер, который используется для удобства выбора цены
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();
priceInputsChangeWidthByChars();
}
});
// При изменении минимального значения цены
priceInputMin.keyup(function(){
var newVal = parseInt($(this).val());
if(newVal < priceFilterMinAvailable) {
newVal = priceFilterMinAvailable;
}
priceSliderBlock.slider("values", 0, newVal);
priceSubmitButtonBlock.show();
priceInputsChangeWidthByChars();
});
// При изменении максимального значения цены
priceInputMax.keyup(function(){
var newVal = parseInt($(this).val());
if(newVal > priceFilterMaxAvailable) {
newVal = priceFilterMaxAvailable;
}
priceSliderBlock.slider("values", 1, newVal);
priceSubmitButtonBlock.show();
priceInputsChangeWidthByChars();
});
// Обновить размеры полей ввода диапазона цен
priceInputsChangeWidthByChars();
});
</script>
<!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь -->

<li class="goods_filters"><br /><h2>Цена</h2>
<ul>
<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>
<div class="goodsFilterPriceSubmit">
<input class="more-link onlybutton" type="submit" value="Показать" style="padding-right:11px;" />
</div>
</div>
</ul>
</li>
{% ENDIF %}
<!-- END Если есть возможность фильтрации товаров по ценам -->

<!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
{% IF SHOW_GOODS_FILTERS %}
<li class="goods_filters"><br /><h2>Фильтры</h2>
<ul>
<div class="contentTbodySearchFilterBlock cornerAll">
<!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд батареи) -->
{% FOR filter_attr_list %}
<span class="contentTbodySearchFilterBlockHeader">{filter_attr_list.NAME}</span>
<div class="contentTbodySearchFilterBlockValues">
{% FOR values %}
<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 for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br />
{% ENDFOR %}
</div>
{% ENDFOR %}

<!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
{% FOR filter_prop_list %}
<span class="contentTbodySearchFilterBlockHeader">{filter_prop_list.NAME}</span>
<div class="contentTbodySearchFilterBlockValues">
{% FOR values %}
<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 for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br />
{% ENDFOR %}
</div>
{% ENDFOR %}
</div>
</ul>
</li>
{% ENDIF %}
</form>
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль фильтров по товарам -->



Для шаблона "Радость".
В файле "HTML".
Код:
<!-- Если в тарифном плане подключен модуль фильтров по товарам -->
{% IF TARIFF_FEATURE_GOODS_FILTERS %}
	 <!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
	 {% IF SHOW_GOODS_FILTERS %}
	 <div class="block filtercatalog">
	 <div class="title red fmlptn fnt18 over"><a href="{COMPARE_URL}" class="arrow-toggle">Фильтры по <span>товарам</span></a></div>
	 <div class="main padd1 fntarl txtalgnlft fnt12 ">
		 <div class="blocknews clr">
			 <ul class="filter">
					 <!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь -->
					 <form action="" method="get">
					 <div class="contentTbodySearchFilterBlock cornerAll">
						 <!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд аккомулятора) -->
						 {% FOR filter_attr_list %}
						 <div class="title aunder fnt13 contentTbodySearchFilterBlockHeader">{filter_attr_list.NAME}</div>
						 <div class="textshort padd51 contentTbodySearchFilterBlockValues">
						 {% FOR values %}
							 <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 for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} {% IF filter_attr_list.values.NB_GOODS_FILTERED > 0 %}({filter_attr_list.values.NB_GOODS_FILTERED}){% ENDIF %}</label><br />
						 {% ENDFOR %}
						 </div>
						 {% ENDFOR %}
	
						 <!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
						 {% FOR filter_prop_list %}
						 <span class="fnt12b color contentTbodySearchFilterBlockHeader">{filter_prop_list.NAME}</span>
						 <div class="fnt11i contentTbodySearchFilterBlockValues">
						 {% FOR values %}
							 <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 for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} {% IF filter_prop_list.values.NB_GOODS_FILTERED > 0 %}({filter_prop_list.values.NB_GOODS_FILTERED}){% ENDIF %}</label><br />
						 {% ENDFOR %}
						 </div>
						 {% ENDFOR %}
					 </div>
					 </form>
				 </ul>
		 </div>
	 </div>
	 <div class="bottom"></div>
</div>
	 {% ENDIF %}
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль фильтров по товарам -->
Заменить
<!-- Если в тарифном плане подключен модуль фильтров по товарам -->
{% IF TARIFF_FEATURE_GOODS_FILTERS %}
<!-- Форма фильтрации отправляет всегда на ту же страницу, на которой находится пользователь -->
<form action="" method="get">
<!-- Если есть возможность фильтрации товаров по ценам -->
{% IF SHOW_GOODS_PRICE_FILTERS %}
		 <style>
		 .contentTbodySearchPriceFilterBlock {padding: 0 1em 0 1.4em;text-align:center;}
		 .goodsFilterPriceInfo {padding:1em 0 0.5em;}
		 .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;}
		 .goodsFilterPriceSubmit .orangebar { height: 30px; background-position: 12px -37px;}
		 .goodsFilterPriceSubmit .orangebar:hover { background-position: 12px -23px;}
		 .contentTbodySearchPriceFilterBlock {margin-bottom: 5px;}
		 .ui-widget-header {background: orange;}
		 </style>
		 <div class="block">
		 <div class="blocktitle bluesmall">
				 Цена
		 </div>
		 <div class="blockmain fnt12n">
				 <ul class="filter">
				 <div class="contentTbodySearchPriceFilterBlock cornerAll txtalgncnt">
						 <!-- Фильтры по цене -->
						 <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>
						 <div class="goodsFilterPriceSubmit">
						 <button class="orangebar fnt12n" type="submit">Показать</button>
						 </div>
				 </div>
				 </ul>
		 </div>
		 <div class="blockbottom"></div>
		 </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" )
				 ;
			
				 // Изменяет размер ячеек с ценой, т.к. у них нет рамок, есть смысл менять размеры полей ввода, чтобы они выглядили как текст
				 function priceInputsChangeWidthByChars() {
				 priceInputMin.css('width', (priceInputMin.val().length*7 + 3) + 'px');
				 priceInputMax.css('width', (priceInputMax.val().length*7 + 3) + 'px');
				 }
			
				 // Слайдер, который используется для удобства выбора цены
				 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();
						 priceInputsChangeWidthByChars();
				 }
				 });
			
				 // При изменении минимального значения цены
				 priceInputMin.keyup(function(){
				 var newVal = parseInt($(this).val());
				 if(newVal < priceFilterMinAvailable) {
						 newVal = priceFilterMinAvailable;
				 }
				 priceSliderBlock.slider("values", 0, newVal);
				 priceSubmitButtonBlock.show();
				 priceInputsChangeWidthByChars();
				 });
			
				 // При изменении максимального значения цены
				 priceInputMax.keyup(function(){
				 var newVal = parseInt($(this).val());
				 if(newVal > priceFilterMaxAvailable) {
						 newVal = priceFilterMaxAvailable;
				 }
				 priceSliderBlock.slider("values", 1, newVal);
				 priceSubmitButtonBlock.show();
				 priceInputsChangeWidthByChars();
				 });
				 // Обновить размеры полей ввода диапазона цен
				 priceInputsChangeWidthByChars();
		 });
		 </script>
{% ENDIF %}
<!-- END Если есть возможность фильтрации товаров по ценам -->
<!-- Фильтры по товарам. Появляются только на странице категории и поиска по товарам -->
{% IF SHOW_GOODS_FILTERS %}
<div class="block filtercatalog">
	 <div class="title red fmlptn fnt18 over"><a href="#" class="arrow-toggle">Фильтры по <span>товарам</span></a></div>
	 <div class="main padd1 fntarl txtalgnlft fnt12 ">
		 <div class="blocknews clr">
			 <ul class="filter">
					 <!-- Форма поиска отправляет всегда на ту же страницу, на которой находится пользователь -->
					 <form action="" method="get">
					 <div class="contentTbodySearchFilterBlock cornerAll">
						 <!-- Фильтры по характеристикам товаров (Например: Производитель, разрешение экрана, заряд аккомулятора) -->
						 {% FOR filter_attr_list %}
						 <div class="title aunder fnt13 contentTbodySearchFilterBlockHeader">{filter_attr_list.NAME}</div>
						 <div class="textshort padd51 contentTbodySearchFilterBlockValues">
						 {% FOR values %}
							 <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 for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} {% IF filter_attr_list.values.NB_GOODS_FILTERED > 0 %}({filter_attr_list.values.NB_GOODS_FILTERED}){% ENDIF %}</label><br />
						 {% ENDFOR %}
						 </div>
						 {% ENDFOR %}
	
						 <!-- Фильтры по свойствам товарных модификаций (Например: Цвет, размер, модификация) -->
						 {% FOR filter_prop_list %}
						 <span class="fnt12b color contentTbodySearchFilterBlockHeader">{filter_prop_list.NAME}</span>
						 <div class="fnt11i contentTbodySearchFilterBlockValues">
						 {% FOR values %}
							 <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 for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} {% IF filter_prop_list.values.NB_GOODS_FILTERED > 0 %}({filter_prop_list.values.NB_GOODS_FILTERED}){% ENDIF %}</label><br />
						 {% ENDFOR %}
						 </div>
						 {% ENDFOR %}
					 </div>
					 </form>
				 </ul>
		 </div>
	 </div>
	 <div class="bottom"></div>
</div>
{% ENDIF %}
</form>
{% ENDIF %}
<!-- END Если в тарифном плане подключен модуль фильтров по товарам -->


Коды оставшихся шаблонов скоро появятся тут :)

Сообщение отредактировал sengun: 08 Декабрь 2013 - 14:07
Добавлен код для шаблона "Радость"


#2 Flor@@

Flor@@

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

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

Отправлено 12 Ноябрь 2013 - 06:17

ух тыыыыыыыыыыыыыыыы!!!! Супер!!!!!!!

#3 velena168

velena168

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

  • Пользователи
  • PipPipPipPip
  • 1 643 сообщений
  • ГородСанкт- Петербург

Отправлено 12 Ноябрь 2013 - 07:18

Спасибо! Очень нужная функция. Ждем код для Осени.

#4 Джейн

Джейн

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

  • Пользователи
  • PipPipPipPip
  • 293 сообщений
  • ГородСамара

Отправлено 12 Ноябрь 2013 - 08:34

Просмотр сообщенияvelena168 (12 Ноябрь 2013 - 07:18) писал:

Спасибо! Очень нужная функция. Ждем код для Осени.

+1 !!!!!!

#5 sibulba

sibulba

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

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

Отправлено 12 Ноябрь 2013 - 09:22

УРААААААААААААААААААААААААААААААААААААААААААААААА

а по этому же принципу нельзя будет сделать другие параметры такие как квадратные метры или мощности ?

#6 sibulba

sibulba

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

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

Отправлено 12 Ноябрь 2013 - 09:28

порадовали если честно

#7 sibulba

sibulba

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

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

Отправлено 12 Ноябрь 2013 - 09:39

блин фильтр работает шикарно!!!
+ добавились результаты фильтрации к параметрам фильтра
вообще супер
порадовали от души эмоции переполняют так давно ждал этого!!!!!

ps

редактор чеков и писем еще никто не забыл!!! )

#8 Гость_Наталья C._*

Гость_Наталья C._*
  • Гости

Отправлено 12 Ноябрь 2013 - 10:42

Молодцы! Как всегда, Вы на высоте! )))

#9 AlexP_RUS

AlexP_RUS

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

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

Отправлено 12 Ноябрь 2013 - 18:04

Не ужели, похвально, похвально).
Но уже выявился косячок.

Как я понимаю, в код фильтров для мокко надо вставить вот это:
<form action="" method="get">
<style>
		 .contentTbodySearchPriceFilterBlock {padding: 0 1em 0 1.4em;text-align:center;}
		 .goodsFilterPriceInfo {padding:1em 0 0.5em;margin-left:-5px;}
		 .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>
<!-- Если есть возможность фильтрации товаров по ценам -->
{% 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">
				 <input type="submit" value="Показать" />
		 </div>
		 </div>
{% ENDIF %}
<!-- END Если есть возможность фильтрации товаров по ценам -->
Вставил, всё хорошо работает, но этот диапазон цен вывелся на всех категориях и подкатегориях, даже там где фильтры вообще не включены, в следствии чего на этих страницах и не работает.
Можете проверить у меня на сайте.
Надо бы исправит.

#10 Koderhan

Koderhan

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

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

Отправлено 12 Ноябрь 2013 - 18:33

Просмотр сообщенияAlexP_RUS (12 Ноябрь 2013 - 18:04) писал:

Не ужели, похвально, похвально).
Но уже выявился косячок.

Как я понимаю, в код фильтров для мокко надо вставить вот это:

Вставил, всё хорошо работает, но этот диапазон цен вывелся на всех категориях и подкатегориях, даже там где фильтры вообще не включены, в следствии чего на этих страницах и не работает.
Можете проверить у меня на сайте.
Надо бы исправит.


Панель администратора, "Сайт"->"Редактор шаблонов".
В файле "HTML".
Найти код:
<!-- Если есть возможность фильтрации товаров по ценам -->
{% 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">
				 <input type="submit" value="Показать" />
		 </div>
		 </div>
{% ENDIF %}
<!-- END Если есть возможность фильтрации товаров по ценам -->
Заменить:
												  <!-- Если в тарифном плане подключен модуль фильтров по товарам -->
						  {% IF TARIFF_FEATURE_GOODS_FILTERS %}
						  <form action="" method="get">
<style>
		 .contentTbodySearchPriceFilterBlock {padding: 0 1em 0 1.4em;text-align:center;}
		 .goodsFilterPriceInfo {padding:1em 0 0.5em;margin-left:-5px;}
		 .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>
<!-- Если есть возможность фильтрации товаров по ценам -->
{% IF SHOW_GOODS_PRICE_FILTERS %}
  {% IF SHOW_GOODS_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">
				 <input type="submit" value="Показать" />
		 </div>
		 </div>
	{% ENDIF %}
{% ENDIF %}
<!-- END Если есть возможность фильтрации товаров по ценам -->


#11 sibulba

sibulba

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

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

Отправлено 13 Ноябрь 2013 - 15:09

при использовании фильтра параметры которые не подходят к прошщлому выбраному фидльтру недоступны для нажатия. реально ли убирать из чтобы они не блокировались а исчезали?

#12 sengun

sengun

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

  • Модератоpы
  • 1 139 сообщений
  • ГородНижний Новгород

Отправлено 13 Ноябрь 2013 - 18:17

Просмотр сообщенияsibulba (13 Ноябрь 2013 - 15:09) писал:

при использовании фильтра параметры которые не подходят к прошщлому выбраному фидльтру недоступны для нажатия. реально ли убирать из чтобы они не блокировались а исчезали?
Здравствуйте. В шаблоне HTML замените строки
<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 for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br />
на эти
<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 %}style="display:none;"{% ENDIF %} />
<label {% IF filter_attr_list.values.NB_GOODS_FILTERED=0 %}style="display:none;"{% ENDIF %} for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br />

И эти
<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 for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br />
на эти
<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 %}style="display:none;"{% ENDIF %} >
<label {% IF filter_prop_list.values.NB_GOODS_FILTERED=0 %}style="display:none;"{% ENDIF %} for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br />


#13 Flor@@

Flor@@

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

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

Отправлено 13 Ноябрь 2013 - 22:22

Просмотр сообщенияvelena168 (12 Ноябрь 2013 - 07:18) писал:

Спасибо! Очень нужная функция. Ждем код для Осени.
А для осени дайте код, пожалуйста.

#14 Vaccina

Vaccina

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

  • Модераторы
  • 21 341 сообщений

Отправлено 14 Ноябрь 2013 - 02:55

Пожалуйста, ожидайте. Как только код для темы "Осень" будет готов - его добавят в первое сообщение данной темы.

#15 Flor@@

Flor@@

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

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

Отправлено 14 Ноябрь 2013 - 06:35

ХОРОШО.

#16 sibulba

sibulba

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

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

Отправлено 14 Ноябрь 2013 - 08:56

Просмотр сообщенияsengun (13 Ноябрь 2013 - 18:17) писал:

Здравствуйте. В шаблоне HTML замените строки
<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 for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br />
на эти
<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 %}style="display:none;"{% ENDIF %} />
<label {% IF filter_attr_list.values.NB_GOODS_FILTERED=0 %}style="display:none;"{% ENDIF %} for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br />

И эти
<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 for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br />
на эти
<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 %}style="display:none;"{% ENDIF %} >
<label {% IF filter_prop_list.values.NB_GOODS_FILTERED=0 %}style="display:none;"{% ENDIF %} for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br />
круто спасибо
а реально ли сделать так чтобы они не только исчезали но и поднимались вверх чтобы избежать пустых строк?

#17 sengun

sengun

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

  • Модератоpы
  • 1 139 сообщений
  • ГородНижний Новгород

Отправлено 14 Ноябрь 2013 - 14:38

Просмотр сообщенияsibulba (14 Ноябрь 2013 - 08:56) писал:

круто спасибо
а реально ли сделать так чтобы они не только исчезали но и поднимались вверх чтобы избежать пустых строк?
Да, хотя чекбоксы скрываются, теги <br /> в конце указанных участков кодов остаются, они-то и создают эти пробелы.
Можно их также заменить на
<br {% IF filter_prop_list.values.NB_GOODS_FILTERED=0 %}style="display:none;"{% ENDIF %} />


#18 sengun

sengun

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

  • Модератоpы
  • 1 139 сообщений
  • ГородНижний Новгород

Отправлено 14 Ноябрь 2013 - 14:58

Или лучше, чем прописывать каждому элементу условие на скрытие, обернем участки кода в <div>, который и будем скрывать:
замените
<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 %}style="display:none;"{% ENDIF %} />
<label {% IF filter_attr_list.values.NB_GOODS_FILTERED=0 %}style="display:none;"{% ENDIF %} for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br />
на это
<div {% IF filter_attr_list.values.NB_GOODS_FILTERED=0 %}style="display:none;"{% ENDIF %}>
<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 %}disable="disable"{% ENDIF %} />
<label for="filterAttrVal{filter_attr_list.values.ID}">{filter_attr_list.values.VALUE} ({filter_attr_list.values.NB_GOODS_FILTERED})</label><br />
</div>
и этот код
<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 %}style="display:none;"{% ENDIF %} >
<label {% IF filter_prop_list.values.NB_GOODS_FILTERED=0 %}style="display:none;"{% ENDIF %} for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br />
на этот
<div {% IF filter_prop_list.values.NB_GOODS_FILTERED=0 %}style="display:none;"{% ENDIF %} >
<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 %}disable="disable"{% ENDIF %} >
<label for="filterPropVal{filter_prop_list.values.ID}">{filter_prop_list.values.VALUE} ({filter_prop_list.values.NB_GOODS_FILTERED})</label><br />
</div>


#19 sibulba

sibulba

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

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

Отправлено 14 Ноябрь 2013 - 15:01

супер!!!! теперь фильтры реально работают как нужно
добавьте это всем пользователям по умолчанию))))

#20 Михаил4466

Михаил4466

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

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

Отправлено 14 Ноябрь 2013 - 18:03

а как определить какой  у меня шаблон? сайт nse-project.com





Темы с аналогичным тегами обновления, фильтры, uptime

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

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