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