Вот читаю, вроде и вопрос нормальный и движешься ты в правильном направлении, и понимаешь, что надо script.js править. А в конце, посоветуйте как поправить javascript не правя javascript. Да, никак!
У тебя javascriptофобия? )
1. Открываешь template.php, ищешь где там вызывается new BX.Iblock.SmartFilter, над этим вызовом параметры
$arJsParams = array(
"leftSlider" => 'left_slider_'.$key,
// .............
// добавляешь свой параметр, например step (значение = шаг)
"step" => 100
);
2. Открываешь script.js ищешь BX.Iblock.SmartFilter = (function() там внутри
var SmartFilter = function(arParams)
{
if (typeof arParams === 'object')
{
this.leftSlider = BX(arParams.leftSlider);
// ...........
// где-нибудь здесь добавляешь
this.step = arParams.step || 1;
}
};
3. Ищешь функцию
SmartFilter.prototype.recountMinPrice = function()
{
var newMinPrice = (this.priceDiff*this.leftPercent)/100;
newMinPrice = (this.minPrice + newMinPrice).toFixed(this.precision);
// добавляешь эту строку
newMinPrice = Math.round(newMinPrice/this.step) * this.step;
if (newMinPrice != this.minPrice)
this.minInput.value = newMinPrice;
else
this.minInput.value = "";
/** @global JCSmartFilter smartFilter */
smartFilter.keyup(this.minInput);
};
4. Ищешь функцию
SmartFilter.prototype.recountMaxPrice = function()
{
var newMaxPrice = (this.priceDiff*this.rightPercent)/100;
newMaxPrice = (this.maxPrice - newMaxPrice).toFixed(this.precision);
// добавляешь эту строку
newMaxPrice = Math.round(newMaxPrice/this.step) * this.step;
if (newMaxPrice != this.maxPrice)
this.maxInput.value = newMaxPrice;
else
this.maxInput.value = "";
/** @global JCSmartFilter smartFilter */
smartFilter.keyup(this.maxInput);
};
P.S. в template.php есть два вызова new BX.Iblock.SmartFilter - первый = цены, второй = остальные ползунки