質問

私の場合、私の場合は0ドルである最小価格から価格スライダーのフィルタリングを開始すると、スライダーは正常に動作しますが、最大値からフィルタリングを開始すると(最小値を0に保つ)、フィルターを非ゼロに調整 /増加させるときは何も変わりません値1 $ $または2 $スライダーのような静的な最小値を設定しても正常に動作する場合でも、最大値の制限が適用されますが、値はゼロではありません

これは私のスライダーコード(関連するコード)です

$baseCurrencyCode = Mage::app()->getStore()->getBaseCurrencyCode();
        $currentCurrencyCode = Mage::app()->getStore()->getCurrentCurrencyCode();
        $rate = round(Mage::helper('directory')->currencyConvert(1.0000, $baseCurrencyCode, $currentCurrencyCode),2);
        if($this->_currMaxPrice > 0){$Curmax = $this->_currMaxPrice;} else{$Curmax = $this->getMaxRangePrice; }
        if($this->_currMinPrice > 0){$Curmin = $this->_currMinPrice;} else{$Curmin = $this->getMinRangePrice;}
        $minRange = $this->getMinRangePrice();
        $maxRange = $this->getMaxRangePrice();
        $minRange = $minRange * $rate;
        $maxRange = $maxRange * $rate;
        if(!isset($_GET['rate'])) {
            $Curmax = $Curmax * $rate;
            $Curmin = $Curmin * $rate;}



<div id="slider-range"></div>

スクリプトファイル /スライダー

$jq( "#slider-range" ).slider({
    range: true,
    min: min,
    max: max,
    values: [ currentMinPrice, currentMaxPrice ],
    slide: function( event, ui ) {
        $jq( "#amount" ).val( currencies + ui.values[ 0 ] + " - "+ currencies + ui.values[ 1 ] );
        $jq('input[name="first_price"]').val(ui.values[0]);
        $jq('input[name="last_price"]').val(ui.values[1]);
    },
    stop: function( event, ui ) {
        var first =   ui.values[0];
        var  last =  ui.values[1];
         var baseUrl = '<?php echo $baseUrl; ?>'+'?rate='+rate+'&first='+first+'&last='+last+params;
             ajaxFilter(baseUrl);

    }
});

$jq( "#amount" ).val( currencies + $jq( "#slider-range" ).slider( "values", 0 ) +
    " - "+currencies + $jq( "#slider-range" ).slider( "values", 1 ) );
$jq('input[name="first_price"]').val($jq( "#slider-range" ).slider( "values", 0 ));
$jq('input[name="last_price"]').val($jq( "#slider-range" ).slider( "values", 1 ));   
役に立ちましたか?

解決

もちろん、あなたの問題はコアコードにあり、価格スライダーがどのように機能するかを学びました。

0に関するあなたの問題はここにあります:

\Mage_Catalog_Model_Layer_Filter_Price::_validateFilter
protected function _validateFilter($filter)
{
    $filter = explode('-', $filter);
    if (count($filter) != 2) {
        return false;
    }
    foreach ($filter as $v) {
        if (($v !== '' && $v !== '0' && (float)$v <= 0) || is_infinite((float)$v)) {
            return false;
        }
    }

    return $filter;
}

この検証は、すべてのフィルターがあるかどうかをチェックします > 0, 、そして、これが当てはまらない場合は、フィルターが無視されます(この方法がfalseを返したが理にかなっている場合はどうなるのかわかりません)。

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top