Duplikacja Pełnej Kategorii Multistore: PrestaShop 8 i 9
Instalacja i obsługa kreatora duplikacji multistore: źródło, mapowanie sklepów docelowych, opcje kopiowania i wykonanie partiami.
Ten moduł dodaje do panelu administracyjnego kreator, który duplikuje całą kategorię, wraz ze wszystkimi jej produktami, wariantami, zdjęciami, atrybutami, cenami specyficznymi i stanami magazynowymi, z jednego sklepu do jednego lub kilku innych sklepów tej samej instalacji PrestaShop w trybie multistore. Ta dokumentacja obejmuje instalację, zasadę działania oraz obsługę kreatora krok po kroku.
Wymagania
- PrestaShop od 8.0 do 9.x.
- Włączony tryb multistore (Parametry zaawansowane, następnie Multisklep), z co najmniej dwoma sklepami.
- Profil pracownika z prawem zapisu do katalogu.
Jeśli multistore jest wyłączony albo istnieje tylko jeden sklep, kreator wyświetla komunikat i nie pozwala na duplikację: nie byłoby żadnego sklepu docelowego.
Instalacja
- W panelu administracyjnym otwórz Moduły, a następnie Menedżer modułów.
- Kliknij „Wgraj moduł” i wskaż plik ZIP.
- Po instalacji w sekcji Katalog pojawia się zakładka „DF Shop Duplicator”.
Zasada działania
W przeciwieństwie do zwykłego duplikatora produktów moduł nie tworzy nowych encji produktu. Opiera się na natywnym mechanizmie asocjacji multistore PrestaShop: produkt pozostaje encją współdzieloną, a do sklepu docelowego kopiowane są wyłącznie dane właściwe dla danego sklepu.
Konkretnie, dla każdego duplikowanego produktu moduł przepisuje wiersze per sklep: product_shop, product_lang, image_shop, product_attribute_shop, stock_available, specific_price (ograniczone do sklepu, z pominięciem koszyka), a także powiązania przewoźników i niezbędne tabele odpowiedników (atrybuty, grupy atrybutów, cechy, marka, dostawca, grupa podatkowa).
Bezpośredni skutek: żadnej zduplikowanej referencji produktu, żadnego zdjęcia skopiowanego na dysk, a przyszłe zmiany globalne produktu nadal propagują się do wszystkich sklepów, które go współdzielą.
Kategorie traktowane są natomiast inaczej. Identyfikator rodzica kategorii (id_parent) jest globalny, więc nie da się po prostu „przypisać” drzewa pod innego rodzica. Moduł tworzy zatem nowe kategorie pod wskazanym przez Ciebie rodzicem docelowym albo wykorzystuje ponownie te, które już istnieją, zależnie od wybranej opcji.
Obsługa kreatora w 3 krokach
Krok 1: sklep i kategoria źródłowa
Wybierz sklep wyjściowy, a następnie kategorię do zduplikowania w drzewie. Zaznacz „uwzględnij podkategorie”, jeśli chcesz przetworzyć całą gałąź, a nie samą wybraną kategorię. Liczba objętych produktów jest wyświetlana dla orientacji.
Krok 2: sklepy docelowe i mapowanie
Zaznacz sklep lub sklepy docelowe. Dla każdego zaznaczonego sklepu pojawia się drzewo kategorii: wskaż w nim kategorię docelową, pod którą trafią produkty i ewentualnie odtworzone drzewo. Domyślnie wstępnie wybrany jest korzeń sklepu docelowego.
Krok 3: opcje i wykonanie
Ustaw opcje kopiowania (patrz następna sekcja), sprawdź podsumowanie i uruchom duplikację. Pasek postępu oraz dziennik na żywo pokazują przebieg, produkt po produkcie, wraz z ewentualnymi ostrzeżeniami.
Opcje w szczegółach
- Kopiuj strukturę drzewa: odtwarza podkategorie pod kategorią docelową z zachowaniem hierarchii. Po odznaczeniu wszystkie produkty trafiają bezpośrednio pod kategorię docelową (tryb „flatten”).
- Wykorzystaj istniejące kategorie: zamiast tworzyć kategorie od nowa, moduł odnajduje te już obecne pod rodzicem docelowym przez dopasowanie ich przepisanego adresu URL. To właśnie czyni duplikację idempotentną.
- Kopiuj ilości: duplikuje stany magazynowe do sklepu docelowego (patrz obsługa stanów poniżej).
- Ceny specyficzne: przepisuje ceny specyficzne ograniczone do sklepu.
- Produkty pakietów (rekurencyjnie): przypisuje również produkty składowe pakietów obecnych w zaznaczeniu.
- Reindeksacja wyszukiwarki: reindeksuje każdy skopiowany produkt na potrzeby wyszukiwania w sklepie. Przydatne, ale wolniejsze przy dużych wolumenach.
- Rozmiar partii: liczba produktów przetwarzanych w jednym przebiegu AJAX (domyślnie 20, maksymalnie 200). Zmniejsz ją na ograniczonym hostingu, zwiększ, aby przyspieszyć.
Odtwarzanie i ponowne wykorzystanie kategorii
Gdy opcja „Wykorzystaj istniejące kategorie” jest włączona, moduł szuka pod rodzicem docelowym kategorii, której przepisany adres URL odpowiada źródłowej. Jeśli taką znajdzie, używa jej, w przeciwnym razie tworzy nową. Dzięki temu możesz uruchamiać duplikację tyle razy, ile potrzeba, bez gromadzenia duplikatów kategorii, na przykład po dodaniu nowych produktów do źródła.
Przy pierwszej synchronizacji „na płasko”, gdy wszystkie produkty mają trafić do jednej kategorii docelowej, odznacz „Kopiuj strukturę drzewa” i pozostaw zaznaczone „Wykorzystaj istniejące kategorie”.
Obsługa stanów magazynowych i współdzielenie między sklepami
Kopiowanie stanów uwzględnia ustawienie współdzielenia magazynu grupy sklepów. Jeśli sklep źródłowy i docelowy korzystają już z tej samej puli magazynowej, kopiowanie jest pomijane: duplikowanie ilości wprowadziłoby niespójności. W przeciwnym razie ilości są przepisywane do sklepu docelowego. Te decyzje są odnotowywane w dzienniku wykonania.
Produkty pakietów
Jeśli zaznaczenie zawiera pakiety, a odpowiednia opcja jest włączona, moduł rekurencyjnie przypisuje produkty składowe każdego pakietu do sklepu docelowego, aby pakiet pozostał sprzedawalny. Zabezpieczenie chroni przed pętlami w przypadku pakietów zagnieżdżonych.
Duże katalogi i wznawianie
Wykonanie przebiega kolejnymi partiami AJAX: przeglądarka wywołuje je jedna po drugiej aż do końca, co eliminuje ryzyko timeoutu PHP nawet przy kilku tysiącach produktów i wariantów. Zadanie jest zapisane w bazie danych (dedykowana tabela), z wskaźnikiem pozycji: jeśli przetwarzanie zostanie przerwane (zamknięcie karty, zerwanie połączenia), może wznowić w miejscu zatrzymania zamiast startować od zera.
Rozwiązywanie problemów
Kreator informuje, że multistore jest niedostępny
Sprawdź, czy tryb multistore jest włączony i czy istnieją co najmniej dwa sklepy. Kreator potrzebuje sklepu źródłowego i co najmniej jednego odrębnego sklepu docelowego.
Część produktów wydaje się „brakować” w sklepie docelowym
Upewnij się, że kategoria docelowa została poprawnie zmapowana w kroku 2 i że produkty są aktywne. W trybie „flatten” produkty trafiają pod jedną kategorię docelową, a nie pod odtworzone drzewo.
Stany magazynowe nie zostały skopiowane
To zachowanie oczekiwane, jeśli oba sklepy korzystają z tej samej puli magazynowej. Dziennik wykonania sygnalizuje to ostrzeżeniem.
Po drugim uruchomieniu widzę zdublowane kategorie
Włącz opcję „Wykorzystaj istniejące kategorie”. Bez niej każde uruchomienie tworzy nowe kategorie pod rodzicem docelowym.