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.
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
- W panelu administracyjnym sklepu sterującego otwórz Moduły > Menedżer modułów.
- Kliknij Wgraj moduł i wyślij plik
dfmultisync.zip. - 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:
- Otwórz Parametry zaawansowane > Webservice.
- Ustaw Włącz webservice PrestaShop na Tak i zapisz.
- Kliknij Dodaj nowy klucz webservice, wygeneruj klucz, a następnie nadaj uprawnienia
GET,POST,PUTiDELETEna zasobach:categories,products,images,combinations,stock_availables,specific_pricesorazlanguages. - 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
- Przejdź do DF Multi-Store Sync > Sklepy zdalne, a następnie Dodaj sklep zdalny.
- Podaj nazwę, adres główny sklepu zdalnego (np.
https://sklep-b.przyklad.com) oraz skopiowany wcześniej klucz webservice. - 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
- Otwórz Pulpit modułu.
- W wierszu profilu kliknij Uruchom teraz.
- 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
- Włącz opcję Cron na wybranych profilach.
- Skopiuj adres URL crona wyświetlony na pulpicie (zabezpieczony tokenem).
- 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.