PS PrestaShop Średnio zaawansowany

Synchronizacja Wielu Sklepów: przewodnik instalacji i konfiguracji

Instalacja, połączenie dwóch sklepów PrestaShop i konfiguracja synchronizacji katalogu w trybie push lub pull, z cronem i obsługą konfliktów.

Zaktualizowano Wersja modułu 1.0.0

Ten przewodnik obejmuje instalację modułu Synchronizacja Wielu Sklepów, połączenie dwóch instalacji PrestaShop oraz pełną konfigurację synchronizacji katalogu.

Wymagania

  • Dwie instalacje PrestaShop od 8.0 do 9.x (bazy danych i hosting mogą być odrębne).
  • Aktywne rozszerzenie PHP cURL w sklepie, który steruje synchronizacją.
  • Włączony webservice w sklepie zdalnym, z dedykowanym kluczem dostępu.

Moduł instaluje się wyłącznie w sklepie, który steruje synchronizacją. Sklep zdalny wymaga jedynie włączonego webservice’u, nie trzeba tam instalować żadnego modułu.

Instalacja modułu

  1. W panelu administracyjnym sklepu sterującego otwórz Moduły > Menedżer modułów.
  2. Kliknij Wgraj moduł i wyślij plik dfmultisync.zip.
  3. Po instalacji moduł dodaje menu Parametry zaawansowane > DF Multi-Store Sync.

Włączenie webservice’u w sklepie zdalnym

W sklepie, który ma zostać podłączony:

  1. Otwórz Parametry zaawansowane > Webservice.
  2. Ustaw Włącz webservice PrestaShop na Tak i zapisz.
  3. Kliknij Dodaj nowy klucz webservice, wygeneruj klucz, a następnie nadaj uprawnienia GET, POST, PUT i DELETE na zasobach: categories, products, images, combinations, stock_availables, specific_prices oraz languages.
  4. Zapisz i skopiuj wygenerowany klucz.

Bez uprawnienia DELETE na zasobie specific_prices synchronizacja cen specyficznych zakończy się błędem: moduł zastępuje zdalny zestaw przez usunięcie i ponowne utworzenie.

Dodanie sklepu zdalnego

  1. Przejdź do DF Multi-Store Sync > Sklepy zdalne, a następnie Dodaj sklep zdalny.
  2. Podaj nazwę, adres główny sklepu zdalnego (np. https://sklep-b.przyklad.com) oraz skopiowany wcześniej klucz webservice.
  3. Zapisz, po czym kliknij Test na liście, aby sprawdzić połączenie.

Przycisk Test faktycznie odpytuje zdalny webservice. Jeśli test się nie powiedzie, sprawdź adres URL (razem z protokołem https://), klucz oraz to, czy webservice jest rzeczywiście włączony po stronie zdalnej.

Tworzenie profilu synchronizacji

Profil opisuje, co synchronizować, w którą stronę i jak rozstrzygać konflikty.

Kierunek: push lub pull

  • Push: bieżący sklep jest źródłem i wysyła swoje dane do sklepu zdalnego.
  • Pull: sklep zdalny jest źródłem, a bieżący sklep odbiera jego dane.

Encje

Wybierz encje do synchronizacji. Zawsze przetwarzane są w tej kolejności, aby zachować zależności: kategorie, produkty, stany magazynowe, ceny specyficzne.

Opcje

  • Synchronizuj zdjęcia: w trybie push wysyłane są nowe zdjęcia lokalne, w trybie pull zdjęcia pobierane są przy tworzeniu produktu.
  • Synchronizuj ceny specyficzne: dostępne wyłącznie w trybie push.
  • Rozmiar partii: liczba encji przetwarzanych w jednym cyklu (od 1 do 25). Zmniejsz ją, jeśli serwer zdalny jest wolny.

Strategie konfliktów

Konflikt powstaje, gdy oba sklepy zmodyfikowały tę samą kartę od czasu ostatniej synchronizacji. Dostępne są cztery strategie:

  • Wygrywa źródło: źródło zawsze nadpisuje cel.
  • Wygrywa cel: encje w konflikcie są pomijane.
  • Wygrywa nowszy wpis: porównywane są daty modyfikacji.
  • Ręcznie: konflikty trafiają do kolejki do rozstrzygnięcia.

Pierwsza synchronizacja

  1. Otwórz Pulpit modułu.
  2. W wierszu profilu kliknij Uruchom teraz.
  3. Synchronizacja wykonuje się partiami: pasek postępu pokazuje na bieżąco liczbę encji utworzonych, zaktualizowanych, pominiętych, w konflikcie i błędnych.

Synchronizacja pracuje w ramach budżetu czasu (domyślnie 25 sekund) i automatycznie wznawia się w miejscu zatrzymania. Przy dużym katalogu kolejne cykle następują po sobie bez ingerencji użytkownika.

Automatyzacja przez cron

  1. Włącz opcję Cron na wybranych profilach.
  2. Skopiuj adres URL crona wyświetlony na pulpicie (zabezpieczony tokenem).
  3. Dodaj go do crontab swojego serwera, na przykład co piętnaście minut:
*/15 * * * * wget -q -O /dev/null "https://twoj-sklep.com/module/dfmultisync/cron?token=TWOJ_TOKEN"

Token w adresie crona jest poufny: pozwala uruchamiać synchronizacje. Nie udostępniaj go i nie publikuj publicznie.

Rozwiązywanie konfliktów

Przy strategii Ręcznie konflikty gromadzą się w zakładce Konflikty. Dla każdego oczekującego wiersza dostępne są opcje:

  • Zachowaj lokalne: wymusza wysłanie (push) wersji lokalnej.
  • Zachowaj zdalne: wymusza pobranie (pull) wersji zdalnej.
  • Pomiń: oznacza konflikt jako obsłużony bez przesyłania danych.

Dzienniki i monitorowanie

Zakładka Dzienniki przechowuje historię operacji (informacja, ostrzeżenie, błąd), z filtrowaniem po poziomie i dacie. Dzienniki są automatycznie czyszczone po 30 dniach.

Rozwiązywanie problemów

Test połączenia kończy się niepowodzeniem

Sprawdź, czy webservice jest włączony po stronie zdalnej, czy klucz jest poprawny i czy jego profil uprawnień obejmuje wymienione wyżej zasoby. Upewnij się, że adres URL zawiera https://.

Część produktów jest pomijana

Moduł paruje produkty i warianty po referencji. Produkt bez referencji, albo taki, którego referencja różni się między sklepami, nie zostanie sparowany na potrzeby stanów magazynowych. Zadbaj o spójne referencje.

Ceny specyficzne się nie synchronizują

Synchronizacja cen specyficznych działa wyłącznie w trybie push i wymaga uprawnienia DELETE na zasobie specific_prices po stronie zdalnej.

Synchronizacja wydaje się wolna

Zmniejsz rozmiar partii w profilu i pozwól cronowi wykonywać kolejne cykle. Pierwszy przebieg jest zawsze najdłuższy, kolejne przesyłają tylko encje faktycznie zmienione.

Czy ta strona była pomocna?

Nadal utknąłeś? Napisz do wsparcia