2012-12-03 152 views
3

我想在在Magento CE將它們添加到購物車1.7Magento的更改產品名稱添加到購物車

林與觀察者checkout_cart_add_product_complete這個試圖改變某些產品的一些價值。如果我嘗試更改產品名稱或產品圖像,則更改價格(CustomPrice)效果不佳,但未保存。

有沒有方法可以在添加到購物車時更改此屬性?

public function checkout_cart_add_product_complete(Varien_Event_Observer $observer) { 
    [...] 
      // Set new Price 
      $lastAddedItem->setOriginalCustomPrice($originalProduct->getPrice()); 
      $lastAddedItem->setCustomPrice($originalProduct->getPrice()); 

      // Set Product-Name 
      $lastAddedItem->setName($originalProduct->getName()); 

      // Set Product-Images 
      $lastAddedItem->setImage($originalProduct->getImage()); 
      $lastAddedItem->setSmallImage($originalProduct->getSmallImage()); 
      $lastAddedItem->setThumbnail($originalProduct->getThumbnail()); 

      // Save updated Item and Cart 
      //$lastAddedItem->save(); 
      Mage::getSingleton('checkout/cart')->save(); 

      // Recalc Totals and save 
      $quote->setTotalsCollectedFlag(false); 
      $quote->collectTotals(); 
      $quote->save(); 

      Mage::getSingleton('checkout/session')->setCartWasUpdated(true); 
} 

回答

9

函數Mage_Sales_Model_Quote_Item :: setProduct重置每次保存(更新)產品時的一些基本信息。幸運的是,您可以鎖定一個事件「sales_quote_item_set_product」。

config.xml中

<config> 
... 
    <global> 
     <events> 
      <sales_quote_item_set_product> 
       <observers> 
        <samples> 
         <type>singleton</type> 
         <class>samples/observer</class> 
         <method>salesQuoteItemSetProduct</method> 
        </samples> 
       </observers> 
      </sales_quote_item_set_product> 
     </events> 
    <global> 
... 
</config> 

Observer.php

class Mynamespace_Samples_Model_Observer 
{ 
    public function salesQuoteItemSetProduct(Varien_Event_Observer $observer) 
    { 
     /* @var $item Mage_Sales_Model_Quote_Item */ 
     $item = $observer->getQuoteItem(); 

     $item->setName('Ians custom product name'); 

     return $this; 
    } 
} 
+0

好的,謝謝。但它仍然不是我所需要的。因爲更改沒有按順序保存。 我試圖在添加到購物車時改變產品的一些細節。所以它應該在結帳(購物車/評論)和之後(帳戶 - >查看訂單,...)無處不在,並且我不想在結算中的多個位置更改細節 – exe

相關問題