Magento setPrice与catalog_block_product_list_collection事件不兼容?

时间:2014-08-08 12:09:40

标签: magento

这是我的配置代码。

<catalog_block_product_list_collection>
            <observers>
                <smashingmagazine_logproductupdate>
                    <class>smashingmagazine_logproductupdate/observer</class>
                    <method>listingchange</method>
                    <type>singleton</type>
                </smashingmagazine_logproductupdate>
            </observers>
        </catalog_block_product_list_collection>

这是我的功能。

public function listingchange(Varien_Event_Observer $observer)
{
    $collection = $observer->getEvent()->getCollection();

    foreach ($collection as $product)
    {
       $product->setPrice( 1500 );
    }

}

价格获取list.phtml文件的价格代码是。

<?php echo $this->getPriceHtml($_product, true) ?>

setPrice()不起作用。 getPrice()函数工作正常。

但是setPrice()不起作用。

请帮忙。感谢&#39; S

1 个答案:

答案 0 :(得分:1)

您最好尝试使用catalog_product_collection_load_after事件执行此操作:

public function listingchange(Varien_Event_Observer $observer)
{
    $collection = $observer->getEvent()->getCollection();

    if ($collection->count()>0){
        $collection->walk(array($this, '_manageProduct'));
    }
}

public function _manageProduct($product) {
    $product->setFinalPrice( 1500 );
}

对我来说真的很好......