Magento Price Slider私がMin Walueが0ドルであるときに機能しないのですか?
-
22-10-2019 - |
質問
私の場合、私の場合は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を返したが理にかなっている場合はどうなるのかわかりません)。
所属していません magento.stackexchange