2010-09-23 8 views
5

Ich habe ein bestimmtes Produkt, das unter bestimmten Umständen im Warenkorb sein muss. Ich habe mir die Dokumentation von Ubercart api angeschaut und sehe keine Haken, die der offensichtliche Ort wären, um zu sehen, ob ein bestimmter Gegenstand vor der Kasse existiert.Drupal/Ubercart Überprüfen Sie, ob sich ein bestimmtes Produkt im Warenkorb befindet.

Ich könnte den Haken hook_add_to_cart verwenden, um das spezielle Element hinzuzufügen, wenn das erste Element hinzugefügt wird, aber ich bin besorgt, dass der Besucher das Element entfernen und dann den Kauf ohne das erforderliche Element abschließen kann.

Haben Sie Vorschläge, wie Sie sicherstellen können, dass sich der Sonderartikel beim Checkout im Warenkorb befindet?

Antwort

2

Sie ein Modul haben, und führen Sie so etwas wie:

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

Das auf der Checkout-Seite feuern, und holen den Warenkorb . Jedes Mal, wenn sie die Checkout-Seite aufrufen, gibt uc_cart_get_contents() den Inhalt des Einkaufswagens zurück.

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

Es gibt wahrscheinlich bessere Möglichkeiten zu tun, was Sie aber tun wollen, wie eine Bedingte Aktion mit der Kasse zu verhindern, wenn Item B in der Warenkorb gelegt ist aber Artikel A nicht. Sie können sich auch Produkt-Kits ansehen, aber ich habe nicht viel Erfahrung damit.

2

Aus dem, was Sie gesagt haben, klingt es so, als ob das Produktkit-Modul sehr wichtig wäre, um sicherzustellen, dass alle mit dem Hauptprodukt verbundenen Artikel im Warenkorb bleiben.

Das Produktkit ist Teil von Ubercart und Sie finden es auf der Modulseite unter 'Ubercart - extra'. Wenn dies nicht gut ist, dann können wir über die Verwendung der API sehen :)

+0

Ich glaube nicht, dass das Produkt-Kit-Modul in meiner Situation funktioniert, aber danke für den Vorschlag, dass ein Ort sein kann, kann ich einige Ideen, wie man eine Lösung implementieren. – Icode4food

2

Eine alte Frage, aber ich fand eine großartige Lösung.

hook_uc_cart_item_delete() Funktionen speziell auf bestimmte Entitäten, wenn sie entfernt werden. Sie können diesen Hook nur in Ihrem Modul festlegen, nach der bestimmten Entität suchen, die entfernt wird, die von dem anderen Element abhängig ist, und dann uc_cart_remove_item() für das Objekt verwenden, das Sie entfernen möchten.

Verwandte Themen