2013-07-21 7 views
5

Ich hoffe, jemand kann mir helfen ...Zitat Artikel Option verloren nach der Bearbeitung eines Artikels

Das Ziel ist es, Produkte in den Warenkorb getrennt zu setzen. Wenn also 2 Produkte mit der gleichen ID im Warenkorb sind, sollten sie separat angezeigt und gehandhabt werden.

Um dies zu erreichen, verwende ich die Optionen und Ereignisse des Angebots.

Veranstaltung: checkout_cart_product_add_after Code:

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

Ich versuchte auch, die gleich mit addional_options:

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

Danach - alles funktioniert. Die Optionen werden im Warenkorb angezeigt und sie wurden in der Datenbank gespeichert (sales_flat_quote_item_option) und sie haben alle ihre eigene Artikel-ID.

Aber wenn ich ein Produkt bearbeite und es wieder in den Warenkorb - die zusätzlichen Optionen gehen verloren, sie sind nicht mehr in der Datenbank ... Dies betrifft alle Produkte mit der gleichen ID im Warenkorb ...

Es wird nett sein, wenn jemand mir helfen kann ...

+0

Es ist sehr hilfreich, Fragen zu stellen - oft ist dies genau der Moment, die Lösung von mir gefunden wurde ... Also - für Ihr Interesse: Die Lösung zu verwenden, ist die event: catalog_product_type_prepare_full_options $ produkt-> addCustomOption ('unique_id', $ uniqueId); –

+7

Bitte fügen Sie es als Antwort hinzu, es wird für andere nützlich sein –

Antwort

0

Ich hatte sie das gleiche Problem und einen ganz anderen Ansatz verwendet. machte ich ein Modul für sie und fügte hinzu, nach dem in config.xml

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

Und erstellt:

app/code/community/Firmenname/MODULE/Modell/außer Kraft setzen/Mage/Vertrieb/Model /Quote.php

Mit dem folgenden Code: (leicht vom Original Magento Code bearbeitet)

<?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; 
    } 
} 

Auf diese Weise wird jedes Produkt separat zum Warenkorb hinzugefügt. Dies ist besonders praktisch, wenn Sie die Option hinzufügen, um Kommentare pro Produkt in Ihren Warenkorb zu legen. Dann fügen Sie dieselben Produkte mit unterschiedlichen Kommentaren hinzu.

Ich hoffe, es hilft jemand anderes :)

Verwandte Themen