Aktualizacja czy przebudowa: co zrobić ze starym modułem w PrestaShop 9?

Państwa sklep przechodzi na PrestaShop 9, ale jeden z modułów nie jest już wspierany. Dowiedz się, kiedy wystarczy aktualizacja istniejącego kodu, a kiedy lepszym wyborem będzie jego przebudowa.

Przez Presta Support Opublikowano Przejrzano

Stara karta modułu rozdzielająca się na dwie drogi: limonkowa karta aktualizacji ze strzałką w górę i przerywana karta z nowymi klockami, obok odznaki PrestaShop 9

Państwa sklep przechodzi na PrestaShop 9, ale jeden z modułów nie jest już utrzymywany przez swojego twórcę. Czy powinni Państwo zlecić jego aktualizację, czy przebudowę? Zaktualizowaliśmy dziesiątki modułów napisanych dla PrestaShop od wersji 1.5 do 8. W tym artykule znajdą Państwo oznaki, na które zwracamy uwagę, szybki test kontrolny oraz informację, co każda z tych ścieżek oznacza dla Państwa sklepu.

Dlaczego stare moduły przestają działać w PrestaShop 9

PrestaShop 9 to większy krok niż większość aktualizacji wersji. Moduł, który działał poprawnie w wersji 1.7 lub 8, może zatrzymać instalację, uszkodzić stronę lub, w najgorszym przypadku, unieruchomić całe zaplecze administracyjne. Przyczyny są niemal zawsze takie same:

  • Nowsza wersja PHP. PrestaShop 9 wymaga PHP 8.1 lub nowszego. Kod napisany dla PHP 5 lub 7 napotyka surowsze typy, usunięte funkcje oraz ostrzeżenia, które stały się błędami.
  • Nowszy Symfony. PrestaShop 9 działa na Symfony 6.4 (PrestaShop 8 na Symfony 4.4). Moduły korzystające z usług, formularzy lub tras Symfony ze starej wersji wymagają dostosowania.
  • Usunięte metody rdzenia i stałe. Funkcje, które od lat były przestarzałe, takie jak Tools::displayPrice() lub ajaxDie(), zostały usunięte. Moduł, który nadal je wywołuje, zawodzi zaraz po uruchomieniu takiego kodu.
  • Biblioteki, które nie są już dostarczane. Starsze moduły czasami polegają na bibliotekach, które PrestaShop sam wcześniej zawierał, takich jak Guzzle 5 czy SwiftMailer. W PrestaShop 9 po prostu ich nie ma.
  • Nadpisania (overrides) zmienionych klas. Nadpisanie zastępuje część klasy rdzenia. Kiedy ta klasa ulega zmianie, nadpisanie może uszkodzić sklep lub niepostrzeżenie cofnąć poprawkę.

Przeczytają Państwo więcej o samych zmianach w artykule PrestaShop 9: co nowego oraz PrestaShop 9.2.

Aktualizacja zazwyczaj wystarcza, gdy

  • moduł instaluje się i działa obecnie w PrestaShop 1.7 lub 8;
  • problemy obejmują usunięte metody i stałe (takie jak Tools::displayPrice() lub ajaxDie());
  • moduł utrzymuje własną logikę we własnych plikach i ma niewiele nadpisń;
  • jego szablony korzystają z Smarty lub Twig w normalny sposób, dzięki czemu warstwa wyświetlania może pozostać bez zmian;
  • są Państwo zadowoleni z działania modułu i potrzebują jedynie, aby nadal działał.

Większość tych poprawek ma charakter mechaniczny: moduł nadal robi dokładnie to samo, aktualizowany jest jedynie kod, który wywołuje. Moduły napisane dla PrestaShop 1.5 i 1.6 często również dają się dobrze zaktualizować. Państwa ustawienia i dane pozostają na swoim miejscu, a moduł wygląda i działa tak samo jak wcześniej.

Warto rozważyć przebudowę, gdy

  • moduł generuje dużo kodu HTML w PHP i wypisuje go bez zabezpieczenia przed atakami (unescaped): zapewnienie bezpieczeństwa wymaga przeniesienia całej warstwy wyświetlania do szablonów;
  • nadpisuje kilka klas rdzenia, których metody uległy zmianie w PrestaShop 9;
  • zależy od innego modułu, który nie został zaktualizowany (na przykład modułu bazowego płatności);
  • zawiera stare biblioteki, których PrestaShop 9 już nie dostarcza, takie jak Guzzle 5 czy SwiftMailer;
  • jest bardzo duży, a jednocześnie musi przejść walidację PrestaShop Validator;
  • i tak chcą Państwo dodać nowe funkcje, więc w każdym razie zmieniliby Państwo sporą część kodu.

Przebudowa nie oznacza porażki starego modułu. Czasami kod po prostu rozrastał się przez lata w taki sposób, że czysta aktualizacja wymaga więcej pracy niż rozpoczęcie od przejrzystego projektu.

Szybki test kontrolny

Co widzisz Wskazuje na
Moduł działa w PrestaShop 8 i nie działa tylko w wersji 9 Aktualizacja
Błędy wspominają o usuniętej metodzie lub klasie Aktualizacja
Moduł nie ma nadpisań lub ma ich niewiele Aktualizacja
Strony modułu są zbudowane jako ciągi HTML w PHP Przebudowa lub duża aktualizacja
Kilka nadpisań klas rdzenia Przebudowa lub duża aktualizacja
Moduł wymaga innego modułu, który nie ma wersji dla PrestaShop 9 Najpierw przyjrzyj się tamtemu modułowi
Chcesz zmienić działanie modułu Przebudowa

Są to wskazówki, a nie sztywne reguły. Moduł może spełniać jeden warunek uzasadniający przebudowę, a mimo to dać się zaktualizować bez problemów. Dlatego przeprowadzamy testy, zanim podamy cenę.

Co sprawdzić przed podjęciem decyzji

  1. Najpierw zapytaj dewelopera. Sprawdź stronę modułu lub PrestaShop Addons: być może istnieje już wersja dla PrestaShop 9.
  2. Wypisz, do czego moduł jest Państwu potrzebny. Z których funkcji rzeczywiście Państwo korzystają? Przebudowa pozwala pominąć to, czego nikt nie potrzebuje.
  3. Sprawdź zależności. Czy moduł potrzebuje innego modułu, funkcji motywu lub usługi zewnętrznej?
  4. Spójrz na nadpisania. Na zapleczu w sekcji Parametry zaawansowane > Informacje mogą Państwo sprawdzić, czy nadpisania są aktywne.
  5. Zaplanuj to razem z aktualizacją sklepu. Jeśli cały Państwa sklep przechodzi na PrestaShop 9, przetestujcie wszystkie moduły razem na kopii. Przeczytaj o tym, jak do tego podchodzimy w ramach naszej usługi aktualizacji PrestaShop.

Co robimy

Kiedy wgrają Państwo moduł, najpierw testujemy go w odizolowanym sklepie PrestaShop 9.2 i podajemy cenę na podstawie naszych ustaleń. Jeśli moduł lepiej przebudować, informujemy o tym przed dokonaniem płatności. Zleć aktualizację swojego modułu lub poproś nas o jego sprawdzenie.

  • PrestaShop 9
  • Moduły
  • Aktualizacje