如果在magento 1.7中可用,则显示最低广告价格而不是价格

时间:2013-07-17 08:19:30

标签: php magento magento-1.7

再次感谢您查看此帖子,我想提一下,我需要在magento地图价格的实际需要。我有一些产品有MAP价格和价格,所以在产品列表上如果地图价格可用,那么系统将显示地图价格,因为卖方不能低于地图价格,

实施例: 地图:3美元 价格:2美元 然后系统将在这种情况下显示产品的MAP价格。

我是否需要覆盖目录价格产品规则的核心功能,或者无论如何都要在.phtml文件上显示地图价格。如果我在phtml文件中确定价格条件,它会受到影响,就像购物车和详细信息页面一样。或者我需要在任何地方进行更改。 如果我想覆盖规则,那么我需要更改哪个文件

并进行MAP配置,但它会显示购物车上的任何地方的价格,因为我在MAP配置上做错了。

请提前帮助我!

1 个答案:

答案 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方法。试试看。