PrestaShop

Migracja PrestaShop 8 z wersji 1.7: co sprawdzić przed aktualizacją

· Krzysztof Balicki

Dwóch mężczyzn przenoszących kartony w pustym biurze

Migracja PrestaShop 8 zaczyna się od kontroli, a nie od kliknięcia „Aktualizuj”. Zanim ruszysz z wersji 1.7, sprawdź PHP na serwerze, zgodność modułów i motywu. Potem pełna kopia sklepu i test całej operacji na tej kopii. Dopiero kiedy test przejdzie bez błędów, planujesz aktualizację sklepu produkcyjnego. Nie wcześniej.

Czy migracja PrestaShop 8 to zwykła aktualizacja?

Nie. Nowa wersja główna to nie jest wgranie łatki w piątek po południu (choć kusi). Zmienia się struktura bazy danych, część funkcji zastępują inne, a starsze dodatki potrafią po prostu przestać działać. Masz dwie drogi: zaktualizować istniejący sklep albo przenieść dane do świeżej instalacji. Oficjalna dokumentacja migracji PrestaShop opisuje tę drugą ścieżkę jako wyjście dla sklepów, których nie da się gładko zaktualizować. Kiedy to ma sens? Głównie wtedy, gdy sklep jest mocno przerobiony albo dane pochodzą z niestandardowych zapytań SQL czy z zupełnie innego systemu.

Jaka wersja PHP jest potrzebna dla PrestaShop 8?

PrestaShop 8 chce nowszego PHP niż to, na którym jedzie sporo sklepów 1.7. Więc pierwszy krok jest prosty: sprawdź, co masz na hostingu. Wersję znajdziesz w panelu hostingu albo w informacjach o konfiguracji w panelu administracyjnym sklepu. I porównaj ją z oficjalnymi wymaganiami systemowymi nowej wersji, a nie z tym, co ktoś napisał na forum trzy lata temu. Aha, zmiana PHP uderza też w obecne moduły. Część z nich na nowszym interpreterze się wysypie. Dlatego przełączenie PHP testujesz razem z aktualizacją, na kopii. Nigdy na żywym sklepie.

Zgodność modułów: które dodatki przetrwają aktualizację PrestaShop 1.7

Każdy aktywny moduł trzeba sprawdzić pod kątem deklarowanej zgodności z PrestaShop 8. Niewspierane wymieniasz albo wyłączasz jeszcze przed aktualizacją. W praktyce wystarczy prosta lista kontrolna:

  • spis wszystkich zainstalowanych modułów wraz z ich wersjami,
  • informacja od autora o zgodności z nową wersją sklepu,
  • dostępność aktualizacji i ważność licencji,
  • dodatki nieużywane, które warto po prostu usunąć.

Od czego zacząć? Od modułów płatności, wysyłki i integracji z hurtowniami. Jak któryś z nich padnie, sprzedaż staje od razu, a nie „kiedyś tam”. A gdy dodatek nie ma wersji zgodnej z nowym sklepem? Wtedy ratunkiem bywają licencje modułów z aktualizacjami i wsparciem albo moduł przygotowany na zamówienie, na przykład w K4.pl.

Motyw sklepu i własne modyfikacje kodu

Motyw i nadpisania to moim zdaniem główny winowajca błędów po aktualizacji. Trzeba sprawdzić ich zgodność albo od razu zaplanować przejście na motyw domyślny. Krótko o pojęciu: override, czyli nadpisanie, to plik zmieniający działanie klasy lub kontrolera PrestaShop bez grzebania w rdzeniu. Dobre rozwiązanie, dopóki nie zmienisz wersji. Wtedy takie poprawki często przestają pasować do nowego kodu. Dokumentacja migracji uprzedza wprost, że przeniesienie danych do nowej wersji oznacza utratę motywu sklepu produkcyjnego i ustawienie motywu classic. Czyli sklep zmieni wygląd, a własny szablon trzeba będzie dostosować albo zbudować od nowa. No i dlatego przed aktualizacją spisz wszystkie zmiany w plikach rdzenia, nadpisaniach i szablonach. Wszystkie.

Kopia zapasowa i test na kopii sklepu krok po kroku

Przed aktualizacją robisz pełną kopię plików i bazy. Całą operację przeprowadzasz najpierw w środowisku testowym, czyli na kopii sklepu, nie na produkcji. Kolejność wygląda tak:

  1. Kopia wszystkich plików sklepu i bazy danych.
  2. Postawienie kopii sklepu na subdomenie lub osobnym serwerze.
  3. Zmiana wersji PHP na kopii.
  4. Aktualizacja modułów do wersji zgodnych z nowym sklepem.
  5. Aktualizacja samego sklepu.
  6. Test ścieżki zakupu, płatności, wysyłki maili i działania panelu.

Po teście przejrzyj zamówienia, koszyk i obrazki produktów, także pod kątem kompresji zdjęć. Rzuć też okiem na przekierowania wyłączonych produktów, bo nowsze wersje dają tu więcej opcji, w tym przekierowanie do kategorii. I dwie rzeczy, o których łatwo zapomnieć: zablokuj indeksowanie kopii przez wyszukiwarki i upewnij się, że kopia nie wysyła maili do prawdziwych klientów. Nikt nie lubi dostać potwierdzenia zamówienia, którego nie składał.

Gdy aktualizacja się nie udaje: migracja danych do nowej instalacji

Aktualizacja na kopii nie przechodzi? Trudno. Stawiasz czysty PrestaShop 8 i przenosisz do niego dane. Tu wbudowany import CSV wygrywa z ładowaniem danych klientem MySQL, bo sam uzupełnia wartości domyślne dla brakujących kolumn. Zbędne kolumny pominiesz opcją Ignoruj tę kolumnę. Jedno ostrzeżenie: nie nadpisuj w nowym sklepie tabeli tab, która przechowuje kontrolery panelu administracyjnego. Tą tabelą zarządza PrestaShop i niech tak zostanie. A jeśli dane szły inną drogą niż funkcja importu, obrazki mogą zniknąć, więc trzeba je skopiować ze starego sklepu.

Bezpieczna migracja PrestaShop 8 bez przestoju opiera się na trzech rzeczach: kopii sklepu, sprawdzonej wersji PHP i liście modułów z potwierdzoną zgodnością. Masz je gotowe? To aktualizacja produkcji staje się w sumie powtórką scenariusza, który już raz zadziałał.

Najczęstsze pytania

Czy mogę zaktualizować PrestaShop 1.7 do 8 bez zmiany wersji PHP?

Zależy, co dziś chodzi na serwerze. Jeśli obecne PHP spełnia wymagania nowego sklepu, zmiana nie będzie potrzebna. Ale wiele starszych hostingów ich nie spełnia. Sprawdź oficjalne wymagania systemowe i przetestuj całość na kopii.

Co zrobić z modułem, który nie ma wersji dla PrestaShop 8?

Najpierw zapytaj autora, czy planuje aktualizację. Nie planuje? Szukasz zamiennika albo zlecasz dostosowanie modułu. Przed aktualizacją sklepu wyłącz taki dodatek, żeby nie zablokował całej operacji.

Czy po migracji PrestaShop 8 stracę dane klientów i zamówień?

Przy poprawnie przeprowadzonej aktualizacji dane klientów i zamówień zostają tam, gdzie były. Tylko że bez kopii zapasowej nie masz jak się cofnąć, gdy coś pójdzie nie tak. Przy przenoszeniu danych do nowej instalacji sprawdź ich kompletność na kopii, zanim przełączysz sklep.