0

再次感谢您查看这篇文章,我想提一下,我需要 magento 中的地图价格要求,这是我真正需要的。我有一些产品有 MAP 价格和价格,所以在产品列表中,如果地图价格可用,那么系统将显示地图价格,因为供应商不能低于地图价格出售,

示例: MAP:$3 价格:$2 然后系统将在这种情况下显示产品的 MAP 价格。

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

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

请帮助我提前谢谢!

4

1 回答 1

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 方法可能会更好。尝试一下。

于 2013-07-17T09:59:36.510 回答