2010-10-28 23 views
5

Capisco come creare un prodotto a livello di codice e anche aggiungere al carrello. So che questo potrebbe sembrare stupido, ma è possibile generare un prodotto al volo e aggiungerlo al carrello/preventivo, ma non salvarlo mai effettivamente nel database.Magento: aggiungi un prodotto "falso" al carrello/preventivo

Vogliamo creare un'interfaccia su ordinazione e stavo pensando alla fine di poter aggiungere un prodotto in bundle con tutte le selezioni ma quel prodotto in bundle non sarebbe effettivamente presente nel back-end.

Ho pensato che finché è possibile assicurarsi che l'offerta e l'ordine abbiano ciò di cui ha bisogno in termini di prodotto, sarebbe ok, ma ovviamente c'è probabilmente molto che è legato alla ricerca di cose nel db su un sku o ID specifici. So che se si elimina un prodotto e si osserva un ordine nell'amministratore che causa problemi, almeno lo ha fatto per questo scenario con cui ho avuto a che fare.

Stavo pensando di creare un prodotto bundle gigante che aveva come 6 diversi articoli di bundle e ogni articolo poteva potenzialmente avere come 500 prodotti e quindi, in base a ciò che l'utente seleziona, aggiungo programmaticamente il pacchetto al carrello. Ma poi non ero sicuro se ci sarebbe stato un effetto negativo con un gigantesco prodotto di bundle come quello.

UPDATE: Io non credo che questo funziona, ovviamente ci sono un sacco di informazioni legate al prodotto nel database e abbiamo impostato una prova e subito otteniamo un errore a $ item-> EsprProdotto(). Stiamo andando avanti con la creazione di un prodotto bundle gigante e anche il prodotto generico con l'aggiunta di opzioni personalizzate al volo, che Anda ha sottolineato di seguito. Ogni altro suggerimento sarà molto apprezzato.

risposta

3

Non sono sicuro che l'approccio di clockworkgeek funzionerà. A ogni caricamento della pagina, Magento carica gli articoli dal carrello per assicurarsi che siano ancora validi (in magazzino, prezzi corretti, ecc.) E modifica il carrello per riflettere tali valori. La mia comprensione del sistema in passato è stata che un prodotto nel carrello deve avere un valore di database corrispondente per sopravvivere a questo processo.

L'approccio "prodotto bundle gigante" è un dolore, ma in passato è stato l'approccio migliore che ho trovato. Il tentativo di modificare i valori del prodotto (come il prezzo o gli attributi) verrà annullato dai controlli del carrello, quindi è necessario un prodotto con la massima flessibilità, ad esempio un prodotto bundle troppo personalizzato o un prodotto configurabile.

Spero che questo aiuti!

Grazie, Joe

+0

È possibile modificare il prezzo del prodotto che viene aggiunto al carrello al volo utilizzando setCustomPrice() (Mage_Sales_Model_Quote_Item_Abstract :: setCustomPrice()). –

+0

Grazie Joseph, ho immaginato che tutti quegli assegni per scorte e prezzi siano stati fatti, ma non ci siamo mai troppi, credo che andremo con l'opzione del pacchetto –

2

È possibile creare a livello di codice Mage_Sales_Model_Quote_Item s e aggiungerli al carrello. Hai notato che ha bisogno di un prodotto che corrisponda al suo ID prodotto, ma non deve essere utile. Potrebbe essere un prodotto vuoto e disabilitato, anch'esso creato nel codice. Tutto ciò che serve è un mozzicone.
Le cose necessarie per il carrello sono memorizzate nella voce dell'offerta - campi come nome, valore e quantità. Questi campi vengono quindi copiati direttamente nell'ordine senza utilizzare un prodotto.

+0

Ho intenzione di provare questo orologio. –

2

perché non creare un prodotto generico in dB e quindi impostare la personalizzazione del prodotto, come le opzioni personalizzate (additional_options) al volo a seconda della selezione dell'utente. È possibile aggiungere opzioni personalizzate al prodotto (in realtà all'elemento preventivo) senza doverle salvare nel database. L'ho fatto una volta per un sito web che vende occhiali con prescrizione medica. La prescrizione è stata aggiunta come opzione.

+0

Grazie Anda, penso di aver controllato il tuo sito web sugli occhiali dal tuo portafoglio prima. Prenderò il tuo approccio e vedrò cosa succede rispetto a quello del bundle. Potrei anche provare tutto, quindi sappiamo cosa è possibile in futuro. –

0
Mage::getModel('catalog/product') 

crea un nuovo prodotto.è possibile aggiungerlo a un carro, facendo qualcosa di simile a questo:

$cart = Mage::getSingleton('checkout/cart'); 
$product = Mage::getModel('catalog/product') 
       ->setStoreId($storeid) 
       ->setTypeId($type_id) 
       ->setQty($quantyty) 
       ->setWhatAttributYouWant($attribute); 
$cart->addProduct($product); 

attributi di prodotto si possono trovare nel DB in tabelle che iniziano come catalog_product _... o prendono un prodotto già creato, e vedere che cosa attribuisce ha nella matrice _data (con debugger o solo print_r ($ product-> getData))

Problemi correlati