2010-09-23 10 views
5

Ho un determinato prodotto che deve essere nel carrello in determinate circostanze. Ho esaminato la documentazione di Ubercart api e non vedo nessun hook che sarebbe il posto più ovvio per vedere se un determinato articolo esiste prima del checkout.Drupal/Ubercart Controlla se un determinato prodotto è nel carrello al checkout

Potrei utilizzare il hook hook_add_to_cart per aggiungere l'elemento speciale ogni volta che viene aggiunto il primo elemento, ma sono preoccupato che il visitatore possa rimuovere l'elemento e quindi completare l'acquisto senza l'elemento richiesto.

Qualche suggerimento su come assicurarsi che l'articolo speciale sia nel carrello al checkout?

risposta

2

Si può avere un modulo ed eseguire qualcosa di simile:

function mymodule_init() { 
    if (preg_match('/checkout/', request_uri()) { 
     $items = uc_cart_get_contents(); 
     foreach ($items as $item) { 
     // code 
     } 
    } 
} 

che il fuoco sulla pagina di checkout, e recuperare i contenuti della spesa . Ogni volta che raggiungono la pagina di checkout, uc_cart_get_contents() restituisce il contenuto del carrello.

http://www.ubercart.org/docs/api/uc_cart_get_contents

ci sono modi probabilmente migliori per fare ciò che si vuole fare, però, come l'utilizzo di un azione condizionale per evitare cassa se Voce B è nel carrello, ma voce A non lo è. Puoi anche guardare i kit di prodotti, ma non ho molta esperienza in merito.

2

Da quello che hai detto sembra che il modulo del kit del prodotto potrebbe essere molto utile per garantire che tutti gli articoli associati al prodotto principale siano conservati nel carrello.

Il kit del prodotto viene fornito come parte di ubercart e lo troverete nella pagina dei moduli sotto "Ubercart - extra". Se questo non va bene, allora possiamo vedere su come utilizzare l'API :)

+0

Non penso che il modulo del kit del prodotto funzionerà nella mia situazione ma grazie per il suggerimento, potrebbe essere un luogo in cui posso avere alcune idee su come implementare una soluzione. – Icode4food

2

Una vecchia domanda, ma ho trovato un'ottima soluzione.

hook_uc_cart_item_delete() funzioni specifiche su determinate entità quando vengono rimosse. Puoi semplicemente impostare questo hook nel modulo, controllare che l'entità specifica che viene rimossa dipende dall'altro elemento e quindi utilizzare uc_cart_remove_item() sull'elemento che desideri rimuovere.

Problemi correlati