再次感谢您查看此帖子,我想提一下,我需要在magento地图价格的实际需要。我有一些产品有MAP价格和价格,所以在产品列表上如果地图价格可用,那么系统将显示地图价格,因为卖方不能低于地图价格,
实施例: 地图:3美元 价格:2美元 然后系统将在这种情况下显示产品的MAP价格。
我是否需要覆盖目录价格产品规则的核心功能,或者无论如何都要在.phtml文件上显示地图价格。如果我在phtml文件中确定价格条件,它会受到影响,就像购物车和详细信息页面一样。或者我需要在任何地方进行更改。 如果我想覆盖规则,那么我需要更改哪个文件
并进行MAP配置,但它会显示购物车上的任何地方的价格,因为我在MAP配置上做错了。
请提前帮助我!
答案 0 :(得分:0)
在模板(phtml)文件中添加条件会给您带来问题。此价格将显示给访问者,但实际价格字段将用于计算/购物车等,因此可能存在不匹配。
最简单的方法就是覆盖产品型号和/或产品价格模型。
Mage_Catalog_Model_Product
Mage_Catalog_Model_Product_Type_Price
有很多关于如何覆盖模型的指南:
http://magento4u.wordpress.com/tag/override-catalog-product-model/
为简单起见,您可以将该类复制到本地命名空间,该命名空间将覆盖该类,而无需创建模块/ xml等。
class Mage_Catalog_Model_Product_Type_Price
{
/**
* Default action to get price of product
*
* @return decimal
*/
public function getPrice($product)
{
if($product->getMsrp() > $product->getData('price')) {
return $product->getMsrp();
}
return $product->getData('price');
}
}
这样的东西可能会起作用,虽然它没有以任何形式或形式进行测试,但它可能有助于你开始..
或覆盖产品类
中的getPrice方法<强> Mage_Catalog_Model_Product 强>
/**
* Get product price throught type instance
*
* @return unknown
*/
public function getPrice()
{
if ($this->_calculatePrice || !$this->getData('price')) {
$price = $this->getPriceModel()->getPrice($this);
} else {
$price = $this->getData('price');
}
if($this->getMsrp() > $price) {
return $this->getMsrp();
}
return $price;
}
您可以看到有时它可能没有使用价格模型,因此最好覆盖产品类中的getPrice方法。试试看。