Wyłączenie modułu PrestaShop: znajdź moduł, który psuje sklep
Wyłączenie modułu PrestaShop to najbezpieczniejszy sposób na zatrzymanie modułu, który psuje sklep. Moduł przestaje działać, ale jego ustawienia i dane zostają, więc włączysz go z powrotem jednym kliknięciem. Winnego szukasz w dzienniku błędów i w kolejności ostatnich aktualizacji. Odinstalowanie zostawiasz na koniec, bo usuwa dane modułu.
Autor: Sani. Sani buduje moduł TellMyShop i na co dzień pracuje z zapleczem sklepów PrestaShop.
Aktualizacja: · 5 min czytania
Jak wygląda moduł, który psuje sklep?
Zwykle zaczyna się podobnie. Coś działało wczoraj, dziś nie działa, a w międzyczasie ktoś coś aktualizował. Czwartek, 14:15. Klient przysyła zrzut ekranu karty produktu: opinie pokazują się dwa razy, jedna pod drugą, a gwiazdki przy nazwie zniknęły. Rano zainstalowałeś nowy moduł opinii, bo stary nie wysyłał próśb o ocenę. Starego nikt nie wyłączył.
Objawy konfliktu modułów są rozpoznawalne. Strona ładuje się, ale jeden element nie reaguje. Na karcie produktu pojawia się podwójny blok. Koszyk liczy źle albo nie pokazuje przewoźnika. W najgorszym razie strona kończy się błędem 500. Wtedy zacznij od tekstu PrestaShop błąd 500, bo tam liczy się każda minuta.
Wyłączyć, odinstalować czy usunąć?
Przy szukaniu przyczyny zawsze wyłączasz. Pozostałe dwie operacje są nieodwracalne.
| Operacja | Co się dzieje | Dane modułu | Powrót |
|---|---|---|---|
| Wyłączenie | moduł przestaje działać w sklepie | zostają | jedno kliknięcie „Włącz” |
| Odinstalowanie | PrestaShop usuwa ustawienia, treści i tabele modułu | usunięte | tylko z kopii zapasowej bazy |
| Usunięcie | znikają też pliki modułu z serwera | usunięte | ponowna instalacja i konfiguracja od zera |
| Zmiana nazwy katalogu przez FTP | awaryjne pominięcie modułu, gdy panel nie działa | zostają | przywrócenie nazwy |
W panelu wyłączysz moduł w Moduły > Menedżer modułów, w menu przy przycisku konfiguracji. Przy modułach płatności i dostawy pamiętaj, że klienci od razu tracą tę metodę.
Jak znaleźć moduł, który psuje sklep?
Zacznij od treści błędu, a dopiero potem wyłączaj moduły po kolei.
- Zapisz, co się zmieniło. Które moduły aktualizowałeś, czy zmieniała się wersja PHP, czy ktoś edytował motyw. Ostatnia zmiana jest podejrzanym numer jeden.
- Przeczytaj dziennik. Zaawansowane > Logi pokazują błędy z datą. Komunikat często wskazuje plik w katalogu
modules/nazwa_modulu. Opis tego ekranu jest w dokumentacji dzienników. - Wyłącz najbardziej podejrzany moduł. Tylko jeden. Sprawdź sklep w oknie prywatnym przeglądarki.
- Jeśli dalej nie działa, włącz go z powrotem i wyłącz następny. Wyłączanie kilku modułów naraz utrudnia ustalenie, który był winny.
- Sprawdź nadpisania. Gdy dwa moduły nadpisują tę samą klasę, każdy osobno działa, a razem już nie. W Zaawansowane > Wydajność możesz na chwilę wyłączyć wszystkie nadpisania i sprawdzić, czy problem znika. Czym są nadpisania i czemu bywają kłopotliwe, wyjaśnia dokumentacja dla developerów.
- Zgłoś błąd autorowi. Wyślij treść komunikatu, wersję PrestaShop, wersję PHP i wersję modułu. Bez tego autor zgaduje.
Typowe przyczyny konfliktów po aktualizacji sklepu zebrał Knowband w poradniku o modułach. Podobne historie opisują właściciele na forum PrestaShop.
Jak znaleźć i wyłączyć winny moduł w jednej rozmowie?
Opisujesz objaw, a Claude sprawdza, które moduły działają w danym miejscu strony, czyta dziennik i wskazuje najbardziej prawdopodobny moduł. Wyłączenie pokazuje w podglądzie i wykonuje dopiero po twojej zgodzie.
Na karcie produktu opinie są podwójne, od kiedy dodałem nowy moduł opinii. Sprawdź, co tam się wyświetla, i wyłącz stary moduł, ale nie odinstalowuj.
Pod opisem produktu są podpięte dwa moduły opinii: nowy, zainstalowany dziś, i stary, włączony od dwóch lat. Oba dodają ten sam blok, stąd podwójne opinie. Dziennik nie ma błędów. Przyczyną są dwa moduły, które robią to samo.
Podgląd zmiany:
było: Stary moduł opinii: włączony
będzie: Stary moduł opinii: wyłączony
Opinie zebrane przez stary moduł zostają w bazie. Nowy moduł zwykle ich nie widzi, bo trzyma opinie we własnych tabelach. Wyłączyć?
Tak.
Wyłączony. Odśwież kartę produktu w oknie prywatnym przeglądarki. Gdyby gwiazdki nadal się nie pokazywały, sprawdzę, gdzie nowy moduł je wyświetla.
Odczyt dziennika i listy modułów działa w darmowym Audycie, więc diagnozę dostaniesz bez zakupu. Przykład takiej prośby to komunikaty błędów po aktualizacji modułu. Samo wyłączenie wymaga wersji płatnej i bloku Moduły. Blok Moduły po instalacji jest wyłączony i odpowiada tylko na połączenie serwisowe z dopuszczonych przez ciebie adresów IP. Ten sam sposób działa przy awarii koszyka, co opisuje zastosowanie wyłączenie modułu, który psuje koszyk.
Wyłączenie trwa zwykle kilkanaście do kilkudziesięciu sekund, bo PrestaShop przebudowuje pamięć podręczną. Cofniesz je z historii zmian. Claude nie wyłączy modułu TellMyShop, bo przez niego rozmawia ze sklepem. Odinstalowanie jest możliwe, ale wymaga wpisania dokładnej nazwy modułu i nie da się go cofnąć, dlatego Claude najpierw proponuje wyłączenie.
Kiedy samo wyłączenie nie wystarczy?
Gdy problem zostaje mimo wyłączenia podejrzanego modułu, przyczyna leży gdzie indziej. Są trzy typowe sytuacje.
Pierwsza to nadpisanie, które zostało po innym module, na przykład odinstalowanym z błędem. Plik w katalogu override dalej zmienia działanie PrestaShop, choć modułu już nie ma. Sprawdzenie i usunięcie takiego pliku to praca dla developera.
Druga to zmiana w motywie. Moduł mógł mieć kopię szablonu w motywie i to ona się psuje, a nie sam moduł. Sprawdź katalog modules wewnątrz katalogu motywu.
Trzecia to zmiana po stronie serwera. Hosting mógł na przykład ustawić nową wersję PHP tej samej nocy, w której aktualizowałeś moduły. Wtedy dziennik błędów wskazuje kilka modułów naraz, a nie jeden. Zapytaj hosting, co zmieniało się na serwerze.
Co zrobić, gdy wyłączony moduł był potrzebny?
Ustal z autorem poprawkę i do tego czasu działaj bez modułu albo z zamiennikiem. Gdy autor wyda nową wersję, zaktualizuj moduł, włącz go i sprawdź miejsce, które się psuło. Dziennik przejrzyj jeszcze raz następnego dnia.
Jeśli moduł po tygodniu wyłączenia okazuje się zbędny, możesz go odinstalować. Jak to zrobić bez niespodzianek, opisujemy w tekście o zbędnych modułach PrestaShop.
Pytania i odpowiedzi
Czym różni się wyłączenie modułu od odinstalowania?
Wyłączony moduł przestaje działać, ale jego ustawienia, treści i tabele w bazie zostają. Włączasz go z powrotem jednym kliknięciem i wszystko wraca. Odinstalowanie usuwa dane modułu: konfigurację, treści banerów, czasem całe tabele. Tego nie da się cofnąć bez kopii zapasowej bazy, dlatego przy szukaniu winnego zawsze tylko wyłączasz.
Co to jest konflikt modułów w PrestaShop?
Sytuacja, w której dwa moduły zmieniają to samo miejsce sklepu i sobie przeszkadzają. Najczęściej oba nadpisują tę samą klasę PrestaShop albo podpinają się pod ten sam element strony i ładują sprzeczne skrypty. Każdy działa osobno, a razem psują koszyk albo kartę produktu. Pomaga wyłączenie jednego z nich i rozmowa z autorami.
Czy wyłączenie modułu płatności jest bezpieczne?
Dane modułu zostaną, ale klienci od razu tracą tę metodę płatności. Jeśli to jedyna płatność online, sklep praktycznie przestaje sprzedawać. Przed wyłączeniem sprawdź, czy zostaje inna metoda, i wróć do sprawy szybko. To samo dotyczy modułów dostawy: przewoźnik znika z koszyka.
Jak sprawdzić, które moduły działają na karcie produktu?
W panelu otwórz Wygląd > Pozycje i wybierz miejsce strony, na przykład blok pod opisem produktu. Lista pokaże moduły podpięte w tym miejscu, w kolejności wyświetlania. Gdy widzisz tam dwa moduły robiące to samo, na przykład dwa systemy opinii, masz pierwszego kandydata do wyłączenia.
Czy wyłączenie modułu da się zlecić w rozmowie?
Tak, w wersji płatnej, gdy włączysz blok Moduły. Ten blok działa tylko przez połączenie serwisowe. Claude pokazuje, co się zmieni, ostrzega przy płatnościach i dostawach i czeka na twoją zgodę. Wyłączenie cofniesz z historii zmian. Odinstalowania Claude nie proponuje jako pierwszego kroku.
PrestaShop jest zastrzeżonym znakiem towarowym PrestaShop SA. Claude jest znakiem towarowym Anthropic. TellMyShop nie jest powiązany z żadną z tych firm.