Nasz moduł stara się integrować z różnymi modułami OPC (One Page Checkout), aby zapewnić sprawne działanie oraz maksymalną kompatybilność. Jednak nie każdy moduł OPC pozwala na pełne dostosowanie naszego modułu do jego struktury.


Ustawienia Modułów Zewnętrznych

W zakładce Ogólne > Ustawienia modułu znajduje się sekcja Moduły zewnętrzne, która umożliwia dostosowanie modułu do współpracy z zewnętrznymi modułami koszyka oraz procesami zamówienia w PrestaShop lub Thirty Bees. Poniżej opisano dostępne opcje i ich zastosowanie:

Opcja: Moduł Koszyka

Ta opcja pozwala wybrać moduł odpowiedzialny za obsługę koszyka w Twoim sklepie. Jest to szczególnie istotne, gdy używasz niestandardowego modułu koszyka, zamiast domyślnego rozwiązania PrestaShop lub Thirty Bees.

Dlaczego to jest ważne?

Nasz moduł musi wiedzieć, który moduł obsługuje koszyk, aby mógł poprawnie integrować się i działać wyłącznie w odpowiednich częściach sklepu. Jeśli moduł koszyka nie zostanie poprawnie określony, funkcje naszego modułu mogą być nieaktywne.

Jak skonfigurować?

  1. Wybierz z listy moduł odpowiedzialny za koszyk w Twoim sklepie.
  2. W przypadku korzystania z niestandardowego rozwiązania upewnij się, że jest ono zgodne z wymaganiami PrestaShop/Thirty Bees.

Przykład: Jeśli używasz modułu koszyka opartego na AJAX, a nie domyślnego koszyka, wybierz odpowiedni moduł z listy.


Opcja: Selektor Przycisku Finalizacji Procesu Zamówienia

Ta opcja pozwala określić selektor CSS dla przycisku służącego do przejścia do finalizacji zamówienia. Jest to kluczowe, aby moduł mógł:

  1. Zidentyfikować element na stronie odpowiedzialny za przejście do kolejnego kroku zamówienia.
  2. Blokować możliwość kontynuowania zamówienia, dopóki klient nie wybierze punktu odbioru.

Dlaczego to jest wymagane?

Jeśli Twój szablon lub moduł obsługujący proces zamówienia korzysta z niestandardowego przycisku lub klasy CSS, nasz moduł musi znać jego selektor, aby móc poprawnie nim zarządzać.

Jak skonfigurować?

  1. Wprowadź pełny selektor CSS przycisku do zamówienia, np.: .btn-checkout, #order-button, .cart-summary .checkout.
  2. Upewnij się, że selektor odpowiada faktycznemu przyciskowi w Twoim szablonie.

Przykład Konfiguracji:

Jeśli korzystasz z niestandardowego szablonu z przyciskiem oznaczonym jako .custom-checkout-button, wprowadź następujący selektor:

.custom-checkout-button

Dzięki temu nasz moduł zablokuje kliknięcie przycisku do momentu wybrania punktu odbioru.


Ograniczenia w integracji z niektórymi modułami OPC

Niektóre moduły OPC posiadają bardzo złożone struktury walidacji oraz mechanizmy ignorujące czynniki zewnętrzne, takie jak wyłączony przycisk. W takich przypadkach nasz moduł może nie być w stanie poprawnie wstrzyknąć swoich funkcji.

Jakie problemy mogą wystąpić?

  1. Walidacja koszyka może być nadpisywana przez mechanizmy OPC.
  2. Wyłączone przyciski mogą być ignorowane przez system OPC.
  3. Nasz moduł może nie mieć możliwości zablokowania przejścia do finalizacji zamówienia bez modyfikacji kodu OPC.

Rozwiązanie: Edycja kodu Javascript modułu OPC

W przypadku, gdy moduł OPC uniemożliwia integrację, jedynym sposobem na sparowanie go z naszym modułem jest edycja jego kodu Javascript. W funkcji sprawdzającej poprawność uzupełnionego koszyka należy dodać następującą weryfikację:

if (!sdmUtil.validateOrderDest()) return false; // or add error

Wyjaśnienie kodu:

  • sdmUtil.validateOrderDest() – metoda udostępniona przez nasz moduł, która sprawdza, czy został wybrany punkt dostawy.
  • return false – blokuje przejście dalej, jeśli punkt dostawy nie został wybrany.
  • Alternatywnie można dodać komunikat o błędzie, aby poinformować użytkownika o konieczności wyboru punktu dostawy.

Przykładowa implementacja:

W pliku odpowiedzialnym za walidację koszyka w module OPC należy zlokalizować funkcję obsługującą przejście do kolejnego kroku. Następnie należy wstawić fragment kodu:

function validateCart() {
    // Inne walidacje modułu OPC
    
    // Dodanie walidacji punktu dostawy
    if (!sdmUtil.validateOrderDest()) {
        alert('Proszę wybrać punkt dostawy przed kontynuowaniem.');
        return false;
    }

    // Kontynuacja, jeśli wszystko jest poprawne
    return true;
}

Uwaga: Edycja kodu modułów OPC może wymagać zaawansowanej wiedzy z zakresu Javascript oraz znajomości struktury modułu. W razie problemów skontaktuj się z naszym zespołem wsparcia, aby uzyskać pomoc.