PrestaShop dokumentacja to nie jedna strona, a co najmniej cztery różne źródła: dokumentacja dla deweloperów, dokumentacja użytkownika panelu, referencja API oraz repozytorium kodu na GitHubie. Każde z nich odpowiada na inny typ pytania, a najwięcej czasu traci się na szukanie w złym miejscu. Zanim otworzysz jakikolwiek artykuł, ustal wersję swojego sklepu — poradnik dla 1.6 potrafi zepsuć wdrożenie w 8.x. Poniżej znajdziesz błędy, które widzimy najczęściej, oraz checklistę do odhaczenia przed każdym zadaniem.

Dokumentacja PrestaShop to nie jedna strona — mapa źródeł

Fraza „prestashop dokumentacja” nie prowadzi do jednego miejsca. W praktyce to cztery zasoby i każdy odpowiada na inny typ pytania. Szukanie hooka w dokumentacji użytkownika kończy się kwadransem straconym i zerowym wynikiem — i odwrotnie.

Rozdziel je raz na zawsze:

Devdocs ma osobne wersjonowanie treści. Selektor w lewym menu zmienia artykuł, który czytasz, a numer wersji siedzi też w adresie URL. Link zapisany bez wersji potrafi dziś otworzyć inną gałąź niż w dniu, w którym go wkleiłeś do notatek.

Ostrzeżenie na koniec: wpisy z blogów i forów z lat 2015–2018 opisują 1.6. config/settings.inc.php, klasa Tools, plik defines.inc.php. W 1.7+ defines.inc.php już nie istnieje — konfiguracja leży w app/config/parameters.php. Wklejenie takiego kodu do sklepu 8.x kończy się białym ekranem albo cichym błędem w logach, którego szukanie zajmuje pół dnia.

ŹródłoDo czego służyTypowe pytanie
devdocs.prestashop-project.orgDokumentacja deweloperska: hooki, moduły, motywy, core, testyJakie argumenty ma hook actionValidateOrder w 8.x?
docs.prestashop-project.orgDokumentacja użytkownika panelu administracyjnegoGdzie włączyć podatek od adresu dostawy?
PrestaShop API / WebService referenceEndpointy, zasoby, format żądań i odpowiedziJakim endpointem zaktualizować stan magazynowy?
GitHub PrestaShop/PrestaShopIssues, pull requesty, kod źródłowy, historia zmianCzy ten błąd to znany problem w 8.1.x?

Najpierw sprawdź wersję sklepu, potem otwieraj docs

Numer wersji to pierwsza informacja przed otwarciem jakiegokolwiek artykułu. Trzy sposoby, w kolejności od najszybszego:

  1. Stopka back office — numer wersji widzisz na dole panelu. Pełne dane, łącznie z wersją PHP i konfiguracją serwera, są w Zaawansowane > Informacje.
  2. Pliki na serwerze — w 1.6 w config/settings.inc.php znajdziesz linię _PS_VERSION_. W 1.7+ tego pliku nie ma; dane bazy i sekret znajdziesz w app/config/parameters.php (klucze database_version, database_prefix, secret).
  3. Wersja PHP — ta sama sekcja Zaawansowane > Informacje. Rozjazd między wersją PHP a wersją sklepu to typowy powód błędów, których nie widać na pierwszy rzut oka.

Od 1.7.0 back office działa na Symfony. To zmienia sposób pracy: pojawia się profiler, cache w var/cache, komendy konsolowe. Jeśli trafisz na poradnik, który każe czyścić wyłącznie katalog cache/smarty — wiesz już, że pisano go dla 1.6.

Konsekwencja praktyczna: ten sam hook może mieć inne argumenty w 1.7 i w 8.x, a klasy zmieniają przestrzenie nazw. Sprawdzenie wersji zajmuje 30 sekund, debugowanie niezgodnego kodu w niedzielny wieczór — kilka godzin. Przy pracach większych niż poprawka szablonu, choćby przy integracjach z PrestaShop, wersję wpisuje się do specyfikacji przed pierwszym commitem, bo od niej zależy dobór modułów i sposób podpinania hooków.

WersjaStatusGdzie szukać informacji
1.6.xEOL — brak poprawek bezpieczeństwaArchiwalne devdocs 1.6 oraz kod z tagu 1.6.1.x na GitHubie
1.7.8.xOstatnia gałąź 1.7, w praktyce tylko poprawkiDevdocs z selektorem wersji 1.7
8.0 / 8.1 / 8.2Gałęzie wspieraneDevdocs 8.x, docs użytkownika, issues na GitHubie
9.xNajnowsza liniaDevdocs 9.x — najpierw sprawdź zgodność modułów i motywu

Struktura devdocs PrestaShop: jak nawigować bez błądzenia

Devdocs ma powtarzalną strukturę, którą warto zapamiętać raz na zawsze:

Gdy wyszukiwarka devdocs nie znajduje nic sensownego, przełącz się na code search w GitHubie. Szukanie po nazwie klasy albo metody (np. CartRule::checkValidity) działa znacznie lepiej niż szukanie po opisie słownym. Filtr path:src/ zawęża wyniki do kodu core, a nie do testów i plików tłumaczeń.

Sekcje Core i zaawansowane API w devdocs bywają szkieletowe: opisują intencję, ale nie każdy parametr. Wtedy źródłem prawdy jest plik źródłowy. Praktyka z naszych wdrożeń: kopiuj sygnaturę metody z repozytorium, nie z artykułu. Między minorami zmieniają się typy argumentów i wartości domyślne, a artykuł zostaje w starej wersji.

Dobry nawyk: przy każdym wdrożeniu zapisuj link do artykułu w konkretnej wersji (z numerem w adresie), nie do strony głównej devdocs. Po pół roku nikt nie pamięta, czy dany hook był podpinany przed upgradem do 8.x, a wracanie do starej treści to najszybszy sposób, żeby nie powtarzać analizy. Ta sama zasada działa przy zadaniach łączących dokumentację z gotowymi modułami — choćby przy wdrożeniu PrestaShop GA4 eCommerce, gdzie kolejność zdarzeń w hookach trzeba sprawdzać w kodzie, nie w opisie na blogu.

Hooki w PrestaShop: gdzie jest pełna lista i jak ją czytać

W PrestaShop są dwa typy hooków i pomylenie ich to najczęstsza przyczyna sytuacji „moduł zainstalowany, a na stronie nic się nie zmieniło”. Hooki display... (np. displayHeader, displayHome, displayProductAdditionalInfo) odpowiadają za wyświetlanie w szablonie — moduł podpięty do nich zwraca HTML, który trafia w konkretne miejsce layoutu. Hooki action... (actionCartSave, actionOrderStatusUpdate, actionFrontControllerSetMedia) to zdarzenia w logice — nic nie renderują, tylko wykonują kod w danym momencie. Jeśli potrzebujesz i wyglądu, i logiki (np. banner plus zapis zdarzenia w bazie), rejestrujesz moduł na dwóch hookach — na jednym to nie zadziała.

Jeśli hooki wykorzystujesz do pomiaru zdarzeń, kolejność prac i typowe błędy opisujemy w materiale o wdrożeniu DataLayer w PrestaShop.

Typ hookaKiedy się odpalaCo zwracaTypowe zastosowanie
display...W trakcie renderowania szablonu (front lub back office)HTML (string)Banner, dodatkowa sekcja karty produktu, skrypt w headzie
action...W momencie zdarzenia w logice kontrolera/modeluZwykle nic (może zmodyfikować przekazany parametr)Zapis do bazy, walidacja koszyka, wysyłka danych do systemu zewnętrznego

API i WebService w dokumentacji: dwa różne światy

W PrestaShop równolegle działają dwa API i dokumentacja jednego nie opisuje drugiego. Klasyczny WebService jest dostępny od lat — włączasz go w Zaawansowane > WebService, tworzysz klucz i ustawiasz uprawnienia per zasób (GET/POST/PUT/DELETE osobno). Łączysz się Basic auth: login to klucz API, hasło puste. Zasoby siedzą pod /api/orders, /api/products, /api/customers; domyślny format to XML, JSON wymaga parametru ?output_format=JSON.

Praktyka, która oszczędza godziny: zamiast zgadywać pola, pobierz schemat zasobu — /api/products?schema=synopsis pokazuje strukturę, ?schema=blank pusty szkielet do wysłania. Paginację ustawiasz przez ?limit=0,100&sort=[id_ASC], filtrowanie po dacie przez ?date=1. Kody błędów czytaj dosłownie: 401 to zły lub wyłączony klucz, 403 brak uprawnień do metody, 404 zły zasób lub ID. Przy masowych operacjach (np. 5 tys. zamówień do ERP) licz się z limitami i czasem odpowiedzi — klasyczny WebService nie ma bulkowych endpointów, więc pracujesz paczkami i po kolei, najlepiej przez kolejkę.

Nowe API administracyjne oparte o API Platform (wprowadzane od 8.1, rozwijane w 9.x) to inny świat: inne uwierzytelnianie (OAuth2, client credentials), inne ścieżki i dokumentacja generowana jako OpenAPI. Status: dokładne ścieżki i sposób autoryzacji potwierdź w dokumentacji dla swojej wersji, bo kontrakt zmieniał się między wydaniami. Punkt wyjścia to PrestaShop Developer Documentation.

Uczciwe zastrzeżenie: przed integracją z ERP, płatnością czy kurierem zawsze potwierdź kontrakt na środowisku stagingowym — dokumentacja pokazuje kształt żądania, ale nie zachowanie konkretnej instalacji. Porządek w takich projektach opisujemy w artykule o integracjach z PrestaShop.

CechaKlasyczny WebServiceNowe API administracyjne
Kiedy dostępneOd wersji 1.4, w 1.7/8.x standardOd 8.1, rozwijane w 9.x
UwierzytelnianieKlucz API + Basic authOAuth2 (client credentials)
Format danychDomyślnie XML, JSON przez parametrJSON (OpenAPI)
Gdzie dokumentacjaSekcja WebService w devdocs + schematy przez endpointDokumentacja nowego API / OpenAPI dla danej wersji
Do czego nadaje się dziśSprawdzone integracje, eksport/import zasobówNowe wdrożenia, ale wymaga weryfikacji na stagingu

Motywy i szablony: dokumentacja motywów w praktyce

Motyw 1.7+ ma powtarzalną strukturę: katalog templates z plikami Twig, assets (css, js, obrazy), modules z nadpisanymi szablonami modułów oraz config/theme.yml. Ostatni plik jest kluczowy, bo właśnie tam deklarujesz motyw potomny (np. parent: classic). Motyw potomny dziedziczy wszystko po bazowym, a Ty nadpisujesz tylko te pliki, które naprawdę zmieniasz. Efekt: aktualizacja motywu bazowego nie kasuje Twojej pracy, bo nie tknąłeś jego plików.

Kolejność wyszukiwania szablonu jest sztywna i warto ją znać, żeby nie kopiować plików bez sensu. Dla modułu PrestaShop najpierw szuka szablonu w motywie (themes/<motyw>/modules/<moduł>/views/templates/...), a dopiero potem w katalogu modułu. Dla szablonów core (karta produktu, koszyk, checkout) Twoje pliki w themes/<motyw>/templates/ mają pierwszeństwo przed tymi z głównego katalogu templates/. Jeśli modyfikujesz kilka plików tego samego komponentu, sprawdź, czy nie nadpisujesz partiala, który jest używany w pięciu miejscach — zmiana odbije się wszędzie.

Przykłady w dokumentacji obejmują strukturę motywu i dziedziczenie Twig, natomiast pełny, działający wzorzec najszybciej obejrzysz w starter theme PrestaShop na GitHubie. Dokumentacja pokazuje koncept, kod pokazuje praktykę.

Pułapka, która zjada najwięcej czasu: po edycji szablonu nie widzisz zmian, bo działa cache. Wejdź w Zaawansowane > Wydajność, włącz opcję ponownego kompilowania szablonów przy zmianie plików i wyczyść cache. Gdy panel nie pomaga, usuń zawartość katalogu var/cache/ (w 1.6 dochodzi jeszcze katalog cache w motywie). Zanim zlecasz przebudowę wyglądu, warto policzyć zakres prac — pomaga w tym materiał o tym, kogo wybrać do wdrożenia PrestaShop i ile to kosztuje.

Co chcesz zmienićGdzie nadpisać plikCzego nie ruszać
Szablon strony (np. karta produktu)themes/&lt;motyw&gt;/templates/...Plików w katalogu głównym templates/
Szablon modułu frontowegothemes/&lt;motyw&gt;/modules/&lt;moduł&gt;/views/templates/...Katalogu modules/&lt;moduł&gt;/views/templates/
Style i skryptythemes/&lt;motyw&gt;/assets/Plików motywu bazowego przy pracy na potomnym
Struktura motywu i dziedziczenieconfig/theme.yml (parent: classic)Motyvu bazowego, jeśli korzystasz z potomnego

Czego w dokumentacji PrestaShop nie ma (i jak to obejść)

Dokumentacja PrestaShop istnieje w kilku warstwach i żadna z nich nie jest kompletna. Poniżej cztery luki, które trafiają się najczęściej, oraz metoda na każdą z nich.

1. Brak changelogów między minorami. Między 8.1.0 a 8.1.5 potrafi zmienić się zachowanie walidacji pola albo sygnatura metody, a opis w dokumentacji zostaje bez zmian. Źródłem prawdy są Pull Requesty i historia commitów w repozytorium. W praktyce: git log 8.1.0..8.1.5 -- classes/, a gdy szukasz konkretnej funkcji — git log -S "nazwaMetody". Numer commita wklej do zgłoszenia, żeby nie wracać do tego samego problemu za pół roku.

2. Przykłady kodu pod starą wersję. W dokumentacji dla deweloperów PrestaShop wciąż trafiają się fragmenty pisane pod 1.6 lub 1.7 bez adnotacji. Nie przepisuj ich bezmyślnie — sprawdź sygnaturę w kodzie: classes/, controllers/, src/. Jeśli artykuł mówi jedno, a metoda przyjmuje inne argumenty, wygrywa metoda.

3. Moduły z Marketplace bez dokumentacji technicznej. Część płatnych modułów nie ma żadnego opisu poza stroną sprzedażową. Czytaj kod: plik główny modules/nazwa/nazwa.php (rejestracja hooków, install/uninstall), katalog views/templates oraz override/. Override to najważniejsza informacja — mówi, co moduł nadpisuje w core i co przestanie działać po aktualizacji. Jeśli sklep ma kilka takich modułów, warto zaplanować to jak organizację wdrożenia integracji z PrestaShop, a nie gaszenie pożarów po kolei.

4. Testowanie poza produkcją. Postaw kopię sklepu na stagingu i korzystaj z sandboxa demo PrestaShop, żeby sprawdzić zachowanie bez ryzyka. Ta sama wersja PHP co na produkcji, inaczej wynik testu nic nie znaczy.

Zasada nadrzędna: gdy dokumentacja i kod się kłócą, kod wygrywa. Zapisz wersję PrestaShop, wersję PHP i numer commita, na których testowałeś.

Luka w dokumentacjiGdzie szukać odpowiedzi
Zmiana zachowania między minoramiPull Requesty i historia commitów w repozytorium PrestaShop (git log, git log -S)
Przykład kodu pod starszą wersjęSygnatury w kodzie: classes/, controllers/, src/
Brak opisu modułu z MarketplacePlik modules/…/nazwa.php, widoki, katalog override/
Potrzeba sprawdzenia zachowaniaKopia na stagingu i sandbox demo PrestaShop, ta sama wersja PHP

Checklista przed wdrożeniem: dokumentacja jako narzędzie decyzji

Dokumentacja odpowiada na pytanie „jak to działa”. Brief wdrożeniowy odpowiada na „co robimy”. Bez drugiego pierwszy dokument bywa źródłem sporów. Pięć punktów do odhaczenia przed startem — opis wdrożenia krok po kroku znajdziesz też w materiale o organizacji wdrożenia sklepu PrestaShop.

Każdy z tych punktów jest odpowiedzią na zdanie „to nie było w dokumentacji”.

DecyzjaPytanie kontrolneCo zapisać w briefie
WersjeCzy PHP na stagingu i produkcji jest identyczne?PrestaShop, PHP, MySQL, motyw
Moduł gotowy czy własnyIstnieje hook z potrzebnymi danymi?Wybrany hook lub zakres modułu własnego
Sposób integracjiWebService czy nowsze API?Lista funkcji i zależności do aktualizacji
BackupCzy odtworzenie kopii zostało przetestowane?Komenda mysqldump, zakres tar, data testu
UtrzymanieKto reaguje na błąd i w jakim czasie?Kanał zgłoszeń, czas reakcji, zakres

Kiedy dokumentacja nie wystarcza i warto to zlecić

Granica jest dość wyraźna. Dopóki pracujesz w panelu, na szablonie i na modułach, dokumentacja plus kod modułu zwykle wystarczają. Problemy zaczynają się wtedy, gdy w grę wchodzi kod core i wersjonowanie zmian.

Sygnały, że problem jest większy:

Własny moduł zamiast kolejnej wtyczki. To nie kwestia estetyki, a liczby zależności. Moduł pisany pod konkretny hook robi jedną rzecz, nie wpływa na pozostałe, nie konfliktuje z następnym rozszerzeniem i przechodzi aktualizację razem ze sklepem. Koszt: trzeba go utrzymywać.

Wycena. Uczciwa wycena to liczba godzin pomnożona przez stawkę, rozbita na etapy: analiza, implementacja, testy, wdrożenie, dokumentacja powdrożeniowa. Widełki zależą od zakresu — inny nakład to zmiana szablonu, a inny integracja magazynowa czy integracja PrestaShop z Allegro. Kwota bez opisu zakresu jest bezwartościowa, bo nie da się jej porównać z drugą ofertą.

Opieka po wdrożeniu. Utrzymanie sklepu to aktualizacje PrestaShop, PHP i modułów, backupy z testem odtworzenia, monitoring dostępności i błędów, poprawki w określonym czasie reakcji. Najlepiej z bezpośrednim kontaktem do dewelopera — bez pośredników, którzy przekazują zgłoszenia. Jak wygląda wybór wykonawcy od strony kosztów, opisaliśmy w tekście o wdrożeniu PrestaShop i kosztach.

Najczęstsze błędy i jak je wykryć

Czytanie dokumentacji bez sprawdzenia wersji sklepu.

Jak wykryć: W artykule pojawiają się pliki defines.inc.php, stare ścieżki do /classes/ albo nieistniejące już ustawienia, a Twój sklep działa na 8.x.

Jak naprawić: Najpierw ustal wersję (stopka back office lub Zaawansowane > Informacje), a potem w dokumentacji deweloperskiej wybierz tę samą gałąź w lewym menu.

Traktowanie dokumentacji użytkownika i devdocs jako tego samego zasobu.

Jak wykryć: Szukasz argumentów hooka w instrukcji panelu albo opisu ustawienia sklepu w dokumentacji dla programistów i nic nie pasuje.

Jak naprawić: Rozdziel źródła: ustawienie w panelu → dokumentacja użytkownika, kod i hooki → devdocs, endpoint → referencja API, błąd nie do wyjaśnienia → issues w repozytorium.

Kopiowanie sygnatury metody z artykułu zamiast z pliku źródłowego.

Jak wykryć: Funkcja przyjmuje inne argumenty niż w dokumentacji: pojawia się błąd liczby argumentów albo brak parametru, którego kod oczekuje.

Jak naprawić: Otwórz plik źródłowy w repozytorium PrestaShop/PrestaShop dla swojej wersji i skopiuj sygnaturę z kodu. Dokumentacja bywa o minorę do tyłu.

Opieranie się na wpisach z blogów i forum z lat 2015–2018.

Jak wykryć: Data publikacji jest starsza niż Twoja wersja PrestaShop, a w treści nie ma informacji, dla jakiej wersji powstał wpis.

Jak naprawić: Traktuj taki wpis jako trop, nie jako źródło prawdy. Zweryfikuj rozwiązanie w devdocs dla właściwej wersji lub bezpośrednio w kodzie.

Rejestrowanie hooka poza metodą install() i zostawianie wpisów po odinstalowaniu modułu.

Jak wykryć: Po reinstalacji modułu hook nie odpala, a w tabeli hook_module zostają osierocone wpisy po modułach, których już nie ma.

Jak naprawić: Rejestruj hook przez registerHook w install(), wyrejestrowuj w uninstall(). Po testach sprawdź Design > Positions, czy nie ma podwójnych podłączeń.

Debugowanie problemu bez sprawdzenia issues w repozytorium.

Jak wykryć: Godziny spędzone na szukaniu przyczyny błędu, który ma już otwarte zgłoszenie albo znane obejście opisane przez innych.

Jak naprawić: Przed debugowaniem wyszukaj komunikat błędu i nazwę klasy w issues repozytorium PrestaShop/PrestaShop oraz w kodzie na GitHubie.

Lista kontrolna do odklikania

Podsumowanie

PrestaShop dokumentacja działa dopiero wtedy, gdy wiesz, do którego z czterech źródeł sięgnąć i na jaką wersję patrzysz. Najtańsza czynność w całym procesie to sprawdzenie wersji sklepu i wersji PHP — kosztuje minutę, a oszczędza godziny debugowania. Dokumentacja bywa niekompletna w obszarze core i zaawansowanego API, więc drugim krokiem zawsze jest kod w repozytorium. Zapisz link do artykułu w konkretnej wersji przy każdym wdrożeniu — wrócisz do niego przy kolejnej poprawce.

Najczęściej zadawane pytania

Czym różni się dokumentacja deweloperska od dokumentacji dla użytkownika PrestaShop?

Dokumentacja deweloperska opisuje kod: moduły, motywy, hooki, API i testy. Dokumentacja użytkownika tłumaczy panel: gdzie kliknąć, żeby zmienić ustawienie, jak dodać produkt czy metodę dostawy. Jeśli szukasz ustawienia w panelu, wejdź na devdocs PrestaShop dopiero wtedy, gdy to ustawienie wymaga kodu.

Jak sprawdzić wersję PrestaShop bez dostępu do plików na serwerze?

Zaloguj się do back office i sprawdź stopkę albo wejdź w Zaawansowane > Informacje. Zobaczysz tam numer wersji sklepu i wersję PHP. Dostęp do plików przydaje się dopiero wtedy, gdy panel jest zablokowany przez błąd — wtedy wersję odczytasz z pliku konfiguracyjnego.

Dlaczego hook nie odpala po instalacji modułu?

Najczęstsze przyczyny to brak registerHook w metodzie install(), podłączenie do hooka, którego nie ma w danej wersji, oraz cache szablonów. Sprawdź Design > Positions, wyczyść cache i włącz tryb debug, żeby zobaczyć, jakie hooki faktycznie są wywoływane na stronie.

Gdzie szukać rozwiązania błędu, którego nie ma w dokumentacji?

W issues repozytorium PrestaShop/PrestaShop — po komunikacie błędu i nazwie klasy. Duża część problemów to znane przypadki z obejściem opisanym przez innych. Jeśli nic nie znajdziesz, sięgnij do kodu źródłowego: on jest jedynym źródłem prawdy dla Twojej wersji.

Czy dokumentacja do PrestaShop 1.6 jest jeszcze przydatna?

Tylko jeśli nadal prowadzisz sklep na 1.6. Ta gałąź nie jest już rozwijana, a rozwiązania z tamtych lat — takie jak defines.inc.php czy stare ścieżki — nie mają zastosowania w 1.7 i nowszych. Przy nowym wdrożeniu nie ma powodu, żeby z niej korzystać.

Czy sama dokumentacja wystarczy do wdrożenia integracji, np. z GA4 albo Allegro?

Nie. Dokumentacja mówi, jak działa mechanizm, ale nie odpowiada na pytania o kolejność prac, mapowanie danych i testy. Przy analityce kluczowy jest poprawny DataLayer i zdarzenia eCommerce, a przy marketplace — ustalenie, kto jest źródłem prawdy o stanie magazynu. Praktyczne podejście opisujemy w materiałach o organizacji integracji z PrestaShop.

Jeśli wolisz, żeby ktoś przeszedł przez tę dokumentację za Ciebie i przełożył ją na działający sklep, napisz do nas — pomagamy wdrożyć i utrzymać PrestaShop. Zanim podejmiesz decyzję, zobacz, jak wygląda organizacja pracy i koszty w materiale o wdrożeniu PrestaShop.

Źródła i materiały