上周我遇到了同样的问题。使用 ->setOriginalCustomPrice 方法对于单一货币站点来说很好,但是对于货币切换,它的刚性意味着您需要在每次切换货币时更新购物车项目和标价,这在我看来是非常低效的。
我想出了一个更优雅的解决方案。创建一个模块并在配置的模型部分中添加它;
<models>
<catalog>
<rewrite>
<product>PixieMedia_CustomPrice_Model_Product</product>
</rewrite>
</catalog>
</models>
直观地反击,主要的 ->getFinalPrice 函数在产品模型中而不是价格模型中。
现在在 /app/code/local/Namespace/Module/Model/Product.php 中创建新的 Product.php 模型
class PixieMedia_CustomPrice_Model_Product extends Mage_Catalog_Model_Product {
public function getFinalPrice($qty=null)
// REWRITTEN FUNCTION TO RETURN THE SPECIAL PRICE AND ENSURE CURRENCY CONVERSION
{
$qBreak = false;
$customPrice = Mage::Helper('pixiemedia_customprice')->getCustomerPrice($this);
if($qty) {
$qBreak = $this->getQtyBreakPrice($this->getSku(),$qty,$customPrice[0]);
}
if($qBreak) { return $qBreak; } else { return $customPrice[0]; }
}
}
在我正在从事的特定项目中,客户使用多个价目表进行客户特定定价,其范围将使 Magento 索引定价的速度非常缓慢。因此,我们已将所有数据加载到自定义表中并执行查找以返回客户的正确价格或数量中断。
将您自己的逻辑挂钩并返回您想要的任何价格非常容易。这完全支持货币转换,因此无需折腾重新转换价格。
希望这可以帮助某人。享受 :)