我希望某些商店可以忽略特价,到目前为止我已经通过添加额外条件来更改/Catalog/Model/Product/Type/Price.php
:
public static function calculateSpecialPrice($finalPrice, $specialPrice, $specialPriceFrom, $specialPriceTo, $store = null)
{
if (!is_null($specialPrice) && $specialPrice != false && (extra conditions using store code)) {
if (Mage::app()->getLocale()->isStoreDateInInterval($store, $specialPriceFrom, $specialPriceTo)) {
$finalPrice = min($finalPrice, $specialPrice);
}
}
return $finalPrice;
}
这几乎无处不在。但是在列表视图和搜索结果中,我调用了
$this->helper('core')->currency($_product->getFinalPrice(),true,true)
它似乎使用了一种不同的方法,我无法追踪它 - 任何想法?
更新: 在view.phtml页面上调用的方法非常有效,因此它与每个页面上调用的不同方法有关。
同时: 我知道我可以在列表中使用除了getFinalPrice之外的其他东西,因为它已经在购物车/商品页面中工作,但我需要它不会破坏价格和价格过滤器之类的东西。
答案 0 :(得分:1)
要在列表页面上显示所需的价格,我也需要更改Mage/Catalog/Model/Product.php
。
public function getFinalPrice($qty=null)
{
if (same store code conditions)
$price = $this->_getData('final_price');
else $price = $this->getPrice();
if ($price !== null) {
return $price;
}
return $this->getPriceModel()->getFinalPrice($qty, $this);
}