且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Magento:购物车中的相同产品,价格不同

更新时间:2023-11-30 12:12:22

因此,您将希望摆脱"sales_quote_save_before"

So, you'll want to piggy back off of "sales_quote_save_before"

在config.xml内部:

inside config.xml:

<sales_quote_save_before>
   <observers>
       <pricebuilder>
           <type>singleton</type>
           <class>pricebuilder/observer</class>
           <method>updateQuoteItems</method>
        </pricebuilder>
   </observers>
</sales_quote_save_before>

observer.php内部:

inside observer.php:

/**
 * @param Varien_Event_Observer $observer
 */
public function updateQuoteItems($observer)
{
    /** @var $quote Mage_Sales_Model_Quote */
    $quote = $observer->getQuote();

    /** @var $quoteItem Mage_Sales_Model_Quote_Item */
    foreach ($quote->getAllItems() as $quoteItem) {
        $this->processQuoteItem($quoteItem);
    }
}

/**
 * This is an example that sets all quote items to 123.55.
 * you would of course implement your logic here for the given quote item.
 *
 * @param $quoteItem Mage_Sales_Model_Quote_Item
 *
 * @return $this
 */
private function processQuoteItem($quoteItem)
{
    $finalPrice = 123.55;
    $quoteItem->setCustomPrice($finalPrice);
    $quoteItem->setOriginalCustomPrice($finalPrice);
    $quoteItem->getProduct()->setIsSuperMode(true);

    return $this;
}