2013-07-21 32 views
5

我希望有人能幫助我...報價項目選項迷路編輯一個項目後

的目標是把分離到車中的產品。因此,如果2個具有相同ID的產品在購物車中,它們應該被分開顯示和處理,而不是作爲一個產品/數量爲2.

爲了實現這一點,我使用報價項目選項和事件。

事件:checkout_cart_product_add_after 代碼:

 $quoteItem->addOption(new Varien_Object(
     array(
      'product' => $quoteItem->getProduct(), 
      'code' => 'unique_id', 
      'value' => $uniqueId 
    ) 
)); 

我也試過用addional_options相同:

$additionalOptions = array(
      array(
       'code' => 'unique_id', 
       'label' => 'Uniaue ID', 
       'value' => $uniqueId 
      ) 
     ); 
    $quoteItem->addOption(
      array(
       'code' => 'additional_options', 
       'value' => serialize($additionalOptions), 
      ) 
     ); 

之後 - 一切正常。這些選項顯示在購物車中,並存儲在數據庫中(sales_flat_quote_item_option),並且它們都有自己的item-id。

但是,如果我編輯一個產品,然後再次放入購物車 - 的addional選項迷路,他們是在數據庫中不再...這會影響具有相同ID的所有產品在車...

這將是很好,如果有人可以幫助我...

+0

這是非常有益的提問 - 通常這正是此刻,溶液由我自己發現的...所以 - 您的關注:該解決方案是使用事件:catalog_product_type_prepare_full_options $ product-> addCustomOption('unique_id',$ uniqueId); –

+7

請將其添加爲答案,這對其他人有用 –

回答

0

我有他們同樣的問題,並採用了一種完全不同的方法。 我做了一個模塊,它並添加config.xml中

<global> 
    <models>    
     <sales> 
      <rewrite> 
       <!-- Model --> 
       <quote>Companyname_Modulename_Model_Override_Mage_Sales_Model_Quote</quote> 
      </rewrite> 
     </sales> 
... 

,並創建了以下內容:

應用程序/代碼/社區/公司名稱/ MODULENAME /型號/重寫/法師/銷售/型號/Quote.php

用下面的代碼:(稍微從原始的Magento代碼編)

<?php 
class Companyname_Modulename_Model_Override_Mage_Sales_Model_Quote extends Mage_Sales_Model_Quote 
{ 
    /** 
    * Adding catalog product object data to quote 
    * 
    * @param Mage_Catalog_Model_Product $product 
    * @return Mage_Sales_Model_Quote_Item 
    */ 
    protected function _addCatalogProduct(Mage_Catalog_Model_Product $product, $qty = 1) 
    { 
     $newItem = false; 
     $item = $this->getItemByProduct($product); 
     $item = false; 
     if (!$item) { 
      $item = Mage::getModel('sales/quote_item'); 
      $item->setQuote($this); 
      if (Mage::app()->getStore()->isAdmin()) { 
       $item->setStoreId($this->getStore()->getId()); 
      } else { 
       $item->setStoreId(Mage::app()->getStore()->getId()); 
      } 
      $newItem = true; 
     } 

     /** 
     * We can't modify existing child items 
     */ 
     if ($item->getId() && $product->getParentProductId()) { 
      return $item; 
     } 

     $item->setOptions($product->getCustomOptions()) 
      ->setProduct($product); 

     // Add only item that is not in quote already (there can be other new or already saved item 
     if ($newItem) { 
      $this->addItem($item); 
     } 

     return $item; 
    } 
} 

這樣就可以強制每個產品都被添加到購物車中,如果您添加選項以將每個產品的評論放置在購物車中,則這是非常不錯的,然後人們會用不同的評論添加相同的產品。

我希望它可以幫助別人:)