Magento产品 - > setPrice在事件观察者产品集合加载之后不起作用

时间:2014-05-14 10:00:26

标签: php magento events collections set

我有一位观察员会更改产品清单和产品视图中的产品价格。要意识到我正在使用catalogProductLoadAfter和catalogProductCollectionLoadAfter事件。

public function catalogProductLoadAfter( $observer )
{
        $product    = $observer->getEvent()->getProduct();
        $product->setPrice( 123.00 );
}


public function catalogProductCollectionLoadAfter( $observer )
{
        $collection = $observer->getEvent()->getCollection();
        foreach ($collection as $product)
        {
               $product->setPrice(123.00); // doesn't work
        }
}

catalogProductLoadAfter $ product-> setPrice工作正常,但在catalogProductCollectionLoadAfter它什么都不做......没有错误,没有改变,没有。我错了什么噢?我有没有使用过的魔法,还是一个magento bug?

我曾经为一家拥有这样一位观察员的公司工作过,只有setProductLoadAfter setPrice,而不是catalogProductCollectionLoadAfter setPrice。

我正在使用Trego Design和简单可配置产品插件,它有一个AJAX产品更新程序。是否有可能存在冲突,也许trego插件或SCP插件也会覆盖价格?

//编辑:我搜索了任何setPrice使用,找不到任何可能产生冲突的内容..没有其他模块的外部动作

感谢您的帮助。

问候

1 个答案:

答案 0 :(得分:1)

试试这个

public function catalogProductCollectionLoadAfter( $observer )
{
        $collection = $observer->getEvent()->getCollection();
        foreach ($collection as $product)
        {
               $product->setData('my_price','123.00');
        }
}

您可以检索价格值,如下所示:

$product->getMyPrice();

$product->getData('my_price');