2013-07-21 5 views
5

मुझे उम्मीद है कि कोई मेरी मदद कर सकता है ...एक आइटम संपादित करने के बाद उद्धरण आइटम विकल्प खो गया

लक्ष्य कार्ट को अलग-अलग उत्पादों को रखना है। तो यदि एक ही आईडी वाले 2 उत्पाद कार्ट में हैं, तो उन्हें क्यूटी 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) में संग्रहीत किया जाता है और उनके सभी का अपना आइटम-आईडी होता है।

लेकिन अगर मैं एक उत्पाद को संपादित करता हूं और इसे फिर से गाड़ी में डालता हूं - तो addional विकल्प खो जाते हैं, वे अब डेटाबेस में नहीं हैं ... यह कार्ट में एक ही आईडी के साथ सभी उत्पादों को प्रभावित करता है ...

यह अच्छा होगा, अगर कोई मेरी मदद कर सकता है ...

+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> 
... 

और बनाई में निम्नलिखित:

एप्लिकेशन/कोड/समुदाय/CompanyName/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; 
    } 
} 

इस तरह यह प्रत्येक उत्पाद को कार्ट में अलग करने के लिए मजबूर करता है, यह विशेष रूप से अच्छा है यदि आप अपने कार्ट में प्रति उत्पाद टिप्पणियां रखने का विकल्प जोड़ते हैं, तो लोग अलग-अलग टिप्पणियों के साथ एक ही उत्पाद जोड़ते हैं।

मुझे आशा है कि यह मदद करता है किसी और :)

संबंधित मुद्दे