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()lubajaxDie(), 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()lubajaxDie()); - 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
- Najpierw zapytaj dewelopera. Sprawdź stronę modułu lub PrestaShop Addons: być może istnieje już wersja dla PrestaShop 9.
- 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.
- Sprawdź zależności. Czy moduł potrzebuje innego modułu, funkcji motywu lub usługi zewnętrznej?
- Spójrz na nadpisania. Na zapleczu w sekcji Parametry zaawansowane > Informacje mogą Państwo sprawdzić, czy nadpisania są aktywne.
- 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.