Собственно новый модуль выполняет функцию фильтрации товаров по диапазону цен. Выглядит он примерно так:
Мы его уже встроили в шаблонах Сияние, Лайт, Мокко и Пластик, если установить из из галереи, можно протестировать механизм его работы, не вдаваясь в 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 December 2013 - 14:07
Добавлен код для шаблона "Радость"














