Posting in the Magento forums has been disabled pending the implementation of a new and improved forum solution which should better serve the community.

For new questions please post at magento.stackexchange.com, the community-run support site for the Magento community. We will be providing updates on the new forum solution soon. For questions or concerns please email community@magento.com.

Magento Forum

Produkte aus externem Katalogsystem in Cart legen ohne ein Produkt in der Datenbank anzulegen
 
Impi
Jr. Member
 
Avatar
Total Posts:  10
Joined:  2009-08-25
Germany
 

Hallo,

hat jemand einen Tip wie ich ein Cart Item erzeugen kann, welches nicht von einem Produkt aus dem Katalog abhängig ist? Bisher schreibe ich immer ein Produkt in die Datenbank und erzeuge dann das Cart Item. Dies führt aber dazu das die Datenbank unnötig aufgebläht wird.

Wenn ich das Produkt Model fülle aber nicht speichere und auch kein Stock Item speichere, fliegt derzeit immer eine Exception wenn ich es dem Cart hinzufügen will.

Danke für eventuelle Hinweise

Tim

 
Magento Community Magento Community
Magento Community
Magento Community
 
Siggi_Schmitz
Enthusiast
 
Avatar
Total Posts:  811
Joined:  2011-07-03
 

Hmmm, schwierig...die Produkt ID eines Cart items muß in der normalen Produkt-Tabelle vorhanden sein, das wird per Fremdschlüssel automatisch überprüft. Ist also so einfach nicht möglich. Ich weiß ja nicht was genau du machen willst aber mach es doch wie bisher und versuch das Produkt dann später zu löschen, kannst es ja mit einem entsprechenden Flag speichern und diese Produkte dann per cron löschen lassen, o.ä.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Impi
Jr. Member
 
Avatar
Total Posts:  10
Joined:  2009-08-25
Germany
 

Meine derzeitige Implementierung funktioniert auch so, das ich ein Produkt mit einem bestimmen, dafür vorgesehenen Attributsset anlege, dann in den Cart schiebe und nach der Order wieder entferne. Ich dachte nur ob es vielleicht etwas eleganteres gibt ohne weitere “teure” DB-Abfragen.

Ansonsten ist der Ansatz mit temporär angelegten Produkten wahrscheinlich der effektivste.

Ich bin aber für Alternativen durchaus zu haben smile

Danke.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Willi K.
Jr. Member
 
Total Posts:  2
Joined:  2010-12-22
 

Jeh nach Anzahl der Artikel im Warenkorb, erstellst einmalig Dummy-Produkte…
Die bekommen dann die nötigen Attribute, werden so in den Warenkorb gelegt ohne diese zu speichern.
Arbeitest quasi mit “Vorlagen”.

Hab in nem Projekt aber soweit ich mich erinnern kann mal ein Produkt in den Warenkorb gelegt, das Magento nicht kannte und das hatte auch funktioniert, sah nur bisschen doof im Backend aus wenn man die Bestellung geöffnet hat. Behaupte also das es auch so möglich ist.

 
Magento Community Magento Community
Magento Community
Magento Community
 
Impi
Jr. Member
 
Avatar
Total Posts:  10
Joined:  2009-08-25
Germany
 

Nur mit temporären Produkten funktioniert es halt nicht. Da bekomme ich Exceptions vom Stockitem geworfen im Cart, weil der auf die Existenz des Produktes im Katalog prüft.

Habe folgenden Code genutzt um die Produkte zu erstellen und in den Warenkorb zu legen:

foreach ($cartItems as $cartItem{
            $product 
Mage::getModel('catalog/product');
            
$product->setWebsiteIds(array(1));
            
$product->setSku($cartItem['sku']);
            
$product->setPrice($cartItem['price']);
            
$product->setAttributeSetId(11); 
            
$product->setTypeId('simple');
            
$product->setName($cartItem['name']);
            
$product->setStatus(1);
            
$product->setTaxClassId('2');
            
$product->setWeight(0);
            
$product->setCreatedAt(strtotime('now'));
            
$product->setVisibility(1);

            
$product->save();

           
// â€œStock Item” still required regardless of whether inventory control is used, or stock item Exception given at checkout!

            
$stockItem Mage::getModel('cataloginventory/stock_item');
            
$stockItem->assignProduct($product);
            
$stockItem->setData('is_in_stock'1);
            
$stockItem->setData('stock_id'1);
            
$stockItem->setData('store_id'1);
            
$stockItem->setData('manage_stock'0);
            
$stockItem->setData('use_config_manage_stock'0);
            
$stockItem->setData('min_sale_qty'0);
            
$stockItem->setData('use_config_min_sale_qty'0);
            
$stockItem->setData('max_sale_qty'1000);
            
$stockItem->setData('use_config_max_sale_qty'0);

            
$stockItem->save();
            
$cart Mage::getSingleton('checkout/cart');
            
$cart->addProduct($product, array('qty' => $cartItem['qty']'price' => $cartItem['price']));
        
}
        $cart
->save();
        
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);

        
$message $this->__('Products added to cart successfully.');
        
Mage::getSingleton('core/session')->addSuccess($message);
        
$this->_redirect('checkout/cart');
    
}

Zusätzlich habe ich einen Cron-Job angelegt welches die Produkte nach Anlegedatum wieder aus dem Katalog entfernt. Somit bleibt der Katalog recht schmal.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
Back to top