2010-09-23 11 views
5

Mam jeden określony produkt, który musi znajdować się w koszyku w pewnych okolicznościach. Przeglądałem dokumentację Ui-Aparta i nie widzę żadnych haczyków, które byłyby oczywistym miejscem do sprawdzenia, czy dany przedmiot istnieje przed kasą.Drupal/Ubercart Sprawdź, czy określony produkt znajduje się w koszyku przy kasie.

Mogę użyć zaczepu hook_add_to_cart, aby dodać element specjalny za każdym razem, gdy dodawany jest pierwszy element, ale obawiam się, że użytkownik może usunąć przedmiot, a następnie dokończyć zakup bez wymaganego elementu.

Jakieś sugestie, jak upewnić się, że przedmiot specjalny znajduje się w koszyku przy kasie?

Odpowiedz

2

Można mieć moduł i uruchomić coś takiego:

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

który uruchomi na stronie transakcji i pobrać zawartość koszyka . Za każdym razem, gdy trafią na stronę kasy, uc_cart_get_contents() zwraca zawartość koszyka.

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

Istnieje prawdopodobnie lepsze sposoby robienia tego, co chcesz zrobić, chociaż, jak przy użyciu warunkowego działania w celu zapobieżenia kasę jeśli pozycja B jest w koszyku, ale pozycja A nie jest. Możesz także spojrzeć na zestawy produktów, ale nie mam z tym większego doświadczenia.

2

Z tego, co powiedzieliśmy, wynika, że ​​moduł zestawu produktów może być wart uwagi, jako sposób zapewnienia, że ​​wszystkie przedmioty związane z głównym produktem są przechowywane w koszyku.

Zestaw produktów wchodzi w skład pakietu ubercart, a znajdziesz go na stronie modułów w sekcji "Ubercart - extra". Jeśli to nie jest dobre, to możemy zobaczyć na temat korzystania z API :)

+0

Nie sądzę, że moduł zestawu produktów będzie działał w mojej sytuacji, ale dzięki za sugestię, to może być miejsce, w którym mogę uzyskać pomysły na wdrożenie rozwiązania. – Icode4food

2

Stare pytanie, ale znalazłem świetne rozwiązanie.

hook_uc_cart_item_delete() funkcje specyficzne dla niektórych podmiotów po ich usunięciu. Możesz po prostu ustawić ten hak w swoim module, sprawdzić, czy określony obiekt jest usuwany, który jest zależny od innego elementu, a następnie użyć uc_cart_remove_item() na elemencie, który chcesz usunąć.

Powiązane problemy