GitHub to miejsce, w którym powstaje PrestaShop, a nie sklep, który klient dostaje do ręki. Oficjalna organizacja PrestaShop zawiera repozytorium Core (PrestaShop/PrestaShop), repozytoria modułów natywnych i motyw classic, ale paczki instalacyjne dla produkcji są przygotowywane osobno. Branch develop to bieżąca praca nad kodem, a tagi typu 8.1.x czy 8.2.x odpowiadają wydaniom. Poniżej porządkujemy pojęcia, pokazujemy jak odsiać wiarygodne repozytoria od porzuconych forków i kiedy w ogóle warto klonować kod. Jeśli szukasz gotowego wdrożenia, a nie pracy z kodem źródłowym, zajrzyj do naszego PrestaShop wprowadzenia.

Czym jest PrestaShop GitHub i co tam realnie znajdziesz

GitHub to warsztat, w którym powstaje PrestaShop, a nie sklep, który dostajesz do ręki. Cały kod źródłowy leży w organizacji PrestaShop. Najważniejsze repozytorium to PrestaShop/PrestaShop – pełny Core: kontrolery, klasy, szablony Smarty, instalator, tłumaczenia. Obok niego funkcjonują osobne repozytoria modułów natywnych (m.in. blockreassurance, ps_checkpayment) i motywu classic. Każde z nich ma własne wersjonowanie i własny cykl wydań – moduł działający na 1.7 nie musi działać na 8.2, mimo że leży w tej samej organizacji.

Drugie rozróżnienie, które najczęściej myli się w praktyce: develop vs tagi. Branch develop to bieżąca praca programistów – kod między commitami bywa niespójny, funkcje są w połowie, a testy nie przechodzą. Tagi (np. 8.1.x, 8.2.x) to zamrożone stany kodu odpowiadające konkretnym wydaniom. Gdy sprawdzasz, czy błąd w sklepie klienta jest błędem PrestaShop, patrz na tag zgodny z jego wersją, nie na develop. Inaczej porównujesz dwie różne rzeczy i wyciągasz błędne wnioski.

Trzecia rzecz: instalacja z GitHuba to nie instalacja produkcyjna. Repozytorium nie zawiera skompilowanych assetów (CSS/JS), nie ma w nim zależności PHP pobieranych przez Composer ani finalnej struktury paczki. Paczki release dla produkcji są przygotowywane i publikowane osobno. Klonowanie kodu ma sens w trzech sytuacjach: zgłaszasz błąd, piszesz pull request albo chcesz przetestować poprawkę przed wydaniem. W pozostałych przypadkach tracisz czas.

Z naszych wdrożeń: większość zgłoszeń „PrestaShop ma błąd, widziałem to na GitHubie” dotyczy kodu z develop, który nigdy nie trafił do wydania. Zanim zaczniesz panikować, sprawdź, jak czytane są wydania PrestaShop i kiedy warto aktualizować.

RepozytoriumCo zawieraKiedy realnie zaglądasz
PrestaShop/PrestaShopCore, instalator, panel administracyjnyanaliza błędu, test poprawki przed aktualizacją
blockreassurancemoduł natywny z sekcją zaufaniasprawdzenie zmian w module po aktualizacji sklepu
ps_checkpaymentmoduł płatności przelewemweryfikacja logiki płatności i statusów zamówień
classicdomyślny motywpunkt odniesienia przy nadpisywaniu szablonów

Jak znaleźć właściwe repozytorium i nie pomylić forka z oryginałem

Szukając modułu na GitHubie, wpisujesz frazę i dostajesz kilkanaście wyników. Pierwszy z listy bywa forkiem porzuconym trzy lata temu. Sprawdzasz więc cztery liczby: liczbę commitów (kilka commitów to zwykle eksperyment, nie produkt), datę ostatniej aktywności, liczbę otwartych issues i tempo odpowiedzi na nie oraz obecność pliku LICENSE. Brak licencji to nie formalność – bez niej nie masz jasno określonych praw do używania kodu w komercyjnym sklepie.

Fork poznasz po etykiecie „forked from …” pod nazwą repozytorium i po tym, że nie ma własnych release’ów ani tagów. Skutek przy aktualizacji PrestaShop jest banalnie prosty: nie ma się do czego odwołać. Gdy przechodzisz z PHP 7.4 na 8.1/8.2, porzucony moduł sypie błędami (typowo: dynamiczne właściwości, przestarzałe funkcje mcrypt, brak wsparcia dla intl), a Ty nie masz skąd pobrać poprawki. Zostaje własny patch albo wymiana modułu – obie opcje generują koszt, którego nikt nie zaplanował w budżecie.

Konkretne sygnały ostrzegawcze:

Zanim wgrasz moduł na produkcję, otwórz composer.json i config.xml: sprawdź wymagania PHP, rozszerzenia (intl, gd, zip) i deklarowaną wersję MySQL/MariaDB. Strukturę modułu i wymagania opisuje dokumentacja dla deweloperów PrestaShop. Jeśli nie chcesz analizować kodu, zleć to komuś, kto robi wdrożenia PrestaShop na co dzień – taniej niż gaszenie sklepu po nieudanej instalacji.

Instalacja PrestaShop z GitHuba – krok po kroku (dla developmentu, nie produkcji)

To procedura dla środowiska lokalnego albo stagingowego. Nigdy na sklepie klienta.

Wymagania wstępne: Git, Composer 2, Node.js LTS + npm, PHP 8.1 lub 8.2 z rozszerzeniami intl, mbstring, gd, zip, curl, pdo_mysql, MySQL 5.7+/MariaDB 10.4+, oraz Laragon, DDEV albo Docker. Bazę twórz z kodowaniem utf8mb4 – konwersja później to niepotrzebna robota.

Kolejność działań:

Ostrzeżenie: branch develop może zawierać niedokończone zmiany i nie jest wspierany produkcyjnie. Instalator może się wywalić w połowie, a migracje bazy nie przejść. Testuj na kopii bazy, nie na danych klienta. Jeśli dopiero porównujesz wersje, zamiast klonować kod, wygodniej zacząć od wersji demo i sprawdzenia, co realnie działa przed wdrożeniem, a przy własnych szablonach przeczytaj, jak wygląda wybór i wdrożenie motywu PrestaShop.

Git w pracy nad własnym modułem PrestaShop – standard, który się sprawdza

Moduł w PrestaShop to katalog, którego nazwa musi być identyczna z nazwą pliku głównego: /modules/mojmodul/mojmodul.php. Układ, który przechodzi walidację i nie sprawia kłopotów przy aktualizacjach:

Wersję trzymasz w dwóch miejscach: $this->version = '1.4.2' w pliku głównym oraz w config.xml. Jeśli te wartości się rozjadą, panel może nie zaproponować aktualizacji, a osoba utrzymująca sklep nie odtworzy stanu kodu. Semver stosuj dosłownie: MAJOR, gdy zmieniasz sygnaturę hooka, usuniesz opcję konfiguracyjną albo strukturę tabeli; MINOR, gdy dodajesz nowy hook, kontroler lub ustawienie; PATCH przy poprawkach, które nie zmieniają API modułu.

Wydanie zamykasz tagiem: git tag -a v1.4.2 -m "wydanie 1.4.2", potem git push origin v1.4.2. Paczkę ZIP budujesz tak, aby w archiwum był katalog modułu, a nie luźne pliki – inaczej panel zwróci błąd struktury archiwum. W .gitignore trzymaj vendor/, node_modules/, var/cache/, *.zip, .idea/, .env. Kluczy API (płatności, kurierzy, BaseLinker) nie commituj nigdy – w historii Git zostają na zawsze. Trzymaj je w konfiguracji sklepu lub poza repozytorium, a jeśli już wyciekły, natychmiast rotuj klucz. Jeśli moduły ma utrzymywać ktoś z zewnątrz, ustal to wcześniej – to wątek, który rozwijamy w tekście o tym, jak wygląda praca przy PrestaShop i ile realnie zajmuje utrzymanie sklepu: role, stawki i godziny utrzymania sklepu. Punkt odniesienia dla struktury modułu znajdziesz w dokumentacji dla deweloperów PrestaShop.

ZmianaPodbicie wersjiPrzykładCo widzi klient
Zmiana sygnatury hooka, usunięcie opcji, zmiana tabeliMAJOR1.3.7 → 2.0.0Konieczna aktualizacja motywu lub integracji
Nowy hook, nowa zakładka w panelu, nowe ustawienieMINOR1.3.7 → 1.4.0Można wgrać bez zmian w motywie
Poprawka błędu bez zmiany APIPATCH1.3.7 → 1.3.8Aktualizacja bezpieczna

Gdzie zgłaszać błędy: issues, forum, Slack – kolejność i zasady

Dobry issue to instrukcja odtworzenia, nie opis frustracji. Kolejność działania jest zawsze taka sama:

  1. Odtwórz błąd na świeżej instalacji tej samej wersji (np. PrestaShop 8.1.5, PHP 8.1.27), z motywem classic i wyłączonymi modułami zewnętrznymi. Jeśli błąd znika – to nie Core.
  2. Przeszukaj istniejące zgłoszenia po komunikacie błędu i numerze wersji, zanim dodasz kolejne.
  3. Zgłoś problem w repozytorium PrestaShop/PrestaShop, wypełniając szablon issue.

Co musi znaleźć się w zgłoszeniu: wersja PrestaShop i PHP, wersja MySQL, dokładne kroki reprodukcji (1., 2., 3.), oczekiwany i faktyczny wynik, pełny stack trace oraz fragment logu z var/logs/ (dev.log lub prod.log), lista modułów zewnętrznych i nazwa motywu. Włącz tryb debug w Advanced Parameters → Performance, wyczyść cache i powtórz test – bez tego połowa zgłoszeń wraca z prośbą o uzupełnienie.

Zanim wpiszesz cokolwiek w Issues, sprawdź, czy nie modyfikowaliście plików rdzenia, czy w override/ nie ma nadpisań z poprzedniej wersji i czy winny nie jest moduł płatności lub dostawy. Błędy konfiguracji, limity PHP, OPcache i uprawnienia do katalogu var/ szybciej rozwiążesz na forum PrestaShop lub pisząc do autora modułu. GitHub Issues służy do błędów Core i propozycji zmian kodu, nie do pytań typu „jak ustawić podatek”.

Pull requesty: fork repozytorium, branch od develop, zmiany zgłaszasz do develop, nie do master. Zacznij od małych poprawek – literówka w tłumaczeniu, brakujący typ w PHPDoc, walidacja w kontrolerze. Mały PR przechodzi review w kilka dni, a duży refaktor potrafi leżeć tygodniami. Zasady kontrybucji są opisane w plikach CONTRIBUTING i szablonach issue w repozytorium – przeczytaj je przed pierwszym commitem.

KanałDo czego służyCzego tam nie zgłaszamy
GitHub Issues (PrestaShop/PrestaShop)Potwierdzone błędy Core, propozycje zmian, PR-yPytania o konfigurację sklepu, prośby o darmowe poprawki modułu
Forum PrestaShop i kanały społecznościPytania „jak to ustawić”, dyskusje o wdrożeniachBłędy Core bez kroków reprodukcji
Zgłoszenie do autora modułuBłędy modułu z Addons, konflikt z motywemProblemy wynikające z edycji plików rdzenia
Kanał prywatny zespołu bezpieczeństwaPodatności i wycieki danychPubliczne opisywanie podatności przed naprawą

Aktualizacja PrestaShop a Git: co śledzi sklep, a czego nie

Najczęstsza przyczyna sklepu, który po aktualizacji się nie podnosi, jest prosta: ktoś poprawił plik w classes/ albo controllers/, wrzucił zmianę do repozytorium i wdrożył na produkcję. Przy kolejnej aktualizacji nowa wersja nadpisuje ten plik albo – gorzej – ona sama się nie aplikuje, bo plik różni się od oryginału. Zasada jest jedna: Core zostaje bez modyfikacji.

Zmiany funkcjonalne robisz przez override/classes/ i override/controllers/, własne moduły w modules/, a wygląd w themes/. Każdy z tych obszarów trzymaj w osobnym repozytorium – moduł w swoim, motyw w swoim. Wtedy aktualizacja Core nie wchodzi w konflikt z Twoją pracą, a Ty widzisz w historii commitów, co zmieniła Twoja firma, a co przyszło z zewnątrz.

Przed wdrożeniem zawsze staging: kopia plików i bazy, aktualizacja na kopii, test koszyka, płatności, wysyłki, maili i panelu. Backup bazy wykonaj bezpośrednio przed deploymentem (mysqldump z pełnym zrzutem, nie tylko eksport tabel), a pliki zabezpiecz snapshotem serwera – nie licz na to, że „cofniesz Git-em” aktualizację, która zdążyła zmienić schemat bazy. Po aktualizacji sprawdź, czy override/ działa z nowym Core, wyczyść cache i wygeneruj ponownie .htaccess oraz mapę URL-i. Jeśli motyw bazuje na classic, nie edytuj katalogu classic – trzymaj własny motyw, żeby aktualizacja go nie nadpisała. Kupionych modułów z Addons zwykle nie commitujemy ze względu na licencje – aktualizuj je z panelu, a w repozytorium trzymaj tylko te pisane na zamówienie. Warto też śledzić numery wydań, bo nie każda gałąź, np. 8.1.x, wymaga natychmiastowej aktualizacji – pomaga w tym nasze zestawienie PrestaShop news: jak czytać wydania i kiedy aktualizować.

ŚcieżkaRepozytoriumCo się dzieje przy aktualizacji Core
classes/, controllers/, config/ (Core)brak – tylko do porównania diffemPliki nadpisywane nową wersją
override/osobne repo, np. sklep-overridesZostaje, ale wymaga sprawdzenia zgodności z nowym Core
modules/mojmodul/repo modułu, tagowane wersjeZostaje, aktualizujesz świadomie
themes/mojmotyw/repo motywuZostaje, wymaga testów po zmianie Core
themes/classic/nie edytowaćNadpisywane bez ostrzeżenia

Licencja i komercyjne użycie kodu z PrestaShop GitHub

Zanim sklonujesz cokolwiek z PrestaShop GitHub, otwórz plik LICENSE w katalogu głównym repozytorium. Rdzeń (PrestaShop/PrestaShop) działa na Open Software License 3.0 (OSL-3.0), czyli licencji copyleft. To nie jest „róbta, co chceta”.

Co to znaczy w praktyce:

Licencja rdzenia to jedno, licencje modułów to drugie. Moduły natywne w organizacji PrestaShop mają własne pliki LICENSE – najczęściej OSL-3.0 lub AFL-3.0, ale nie zakładaj tego z góry, tylko sprawdź. Moduły z Addons mają licencję producenta: zwykle własnościową, przypisaną do jednej domeny, z zakazem redystrybucji. Wrzucenie takiego kodu do publicznego repozytorium to najczęstszy błąd, jaki widzimy w audytach.

Prawnika warto zaangażować w trzech sytuacjach: chcesz sprzedawać lub udostępniać zmodyfikowany rdzeń albo jego pochodną, łączysz kod OSL-3.0 z własnym kodem, który ma zostać zamknięty, budujesz moduł na bazie cudzego kodu i planujesz go dystrybuować. Dokumentacja deweloperska PrestaShop opisuje strukturę kodu i hooki, ale nie zastąpi analizy licencyjnej. Jeśli nie chcesz wchodzić w temat kodu źródłowego, sprawdź, ile realnie kosztuje wdrożenie PrestaShop, i porównaj to z własnymi godzinami pracy.

ElementTypowa licencjaDystrybucja zmodyfikowanej wersji
Rdzeń PrestaShop/PrestaShopOSL-3.0Wymagane udostępnienie źródeł na OSL-3.0
Moduły natywne z organizacji PrestaShopPlik LICENSE w repo (często OSL-3.0 lub AFL-3.0)Zależnie od pliku LICENSE – sprawdź przed użyciem
Moduły komercyjne z AddonsLicencja producenta, zwykle własnościowa, 1 domenaZwykle zakaz redystrybucji
Twój moduł wewnętrznyTwoja licencjaBez ograniczeń z OSL-3.0

Kiedy GitHub to dobry pomysł, a kiedy zwykła wdrożenie w DropDigital

GitHub ma sens wtedy, gdy wchodzisz w kod świadomie i masz czas go utrzymywać. Trzy scenariusze, w których warto działać samodzielnie:

Temat warto oddać, gdy pojawia się migracja 1.6 → 8.x (motyw, override'y, moduły bez wsparcia), integracja z ERP (Subiekt GT/nexo, Comarch Optima, Baselinker), optymalizacja wydajności (Core Web Vitals, cache, indeksy w bazie przy 20+ GB) albo obsługa serwera (PHP-FPM, MariaDB, Redis, kopie zapasowe, WAF, aktualizacje bezpieczeństwa). Jedna pomylona aktualizacja na produkcji kosztuje więcej niż cały etap prac.

Opieka po wdrożeniu w praktyce wygląda tak: reakcja na zgłoszenie krytyczne w 4 h w dni robocze, pozostałe zgłoszenia do 1 dnia roboczego, kopia zapasowa co 24 h z testem odtworzenia raz na kwartał, aktualizacje modułów i motywu najpierw na staging, monitoring dostępności i raport miesięczny. Zakres godzinowy i stawki opisujemy szerzej w materiale o pracy przy PrestaShop i godzinach utrzymania sklepu.

Punkt wejścia dla firm, które potrzebują wsparcia zamiast eksperymentów: zaplecze PrestaShop DropDigital.

ZadanieOrientacyjny czas pracyRekomendacja
Prosty moduł wewnętrzny (eksport CSV, pole w formularzu)16–40 hMożna zrobić samodzielnie
Moduł z integracją API (płatności, kurier, faktury)40–120 hZależnie od doświadczenia zespołu
Migracja 1.6 → 8.x z motywem i modułami80–250 hZleć – ryzyko przestoju sprzedaży
Integracja z ERP (Subiekt, Comarch, Baselinker)60–160 hZleć – wymaga testów na żywych danych
Optymalizacja wydajności (Core Web Vitals, baza)40–100 hZleć po audycie
Opieka po wdrożeniu (SLA, aktualizacje, kopie)8–20 h/mies.Zleć, jeśli nie masz etatu na utrzymanie

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

Instalowanie PrestaShop na produkcji wprost z brancha develop, bo ma najnowsze funkcje.

Jak wykryć: W panelu sklepu wersja zawiera dopisek dev, a pliki zmieniają się bez Twojej ingerencji po każdym pobraniu kodu.

Jak naprawić: Zatrzymaj wdrożenie i pobierz oficjalną paczkę wydania z sekcji Releases w repozytorium PrestaShop/PrestaShop albo z prestashop.com. Branch develop trzymaj wyłącznie na środowisku lokalnym.

Pobieranie modułu z przypadkowego forka zamiast z repozytorium autora lub z panelu Addons.

Jak wykryć: Nad nazwą repozytorium widnieje informacja typu forked from, a ostatni commit forka jest starszy niż w oryginale.

Jak naprawić: Wejdź w oryginalne repozytorium autora, porównaj historię commitów i pobierz paczkę ZIP z tagu wydania. Fork traktuj jako kod do czytania, nie jako źródło aktualizacji.

Wgranie modułu sklonowanego z GitHuba bez uruchomienia composer install, co kończy się błędem brakującej klasy.

Jak wykryć: Po instalacji w panelu pojawia się biały ekran lub komunikat o nieznalezionej klasie, a w katalogu modułu nie ma folderu vendor/.

Jak naprawić: Przed instalacją sprawdź plik composer.json, uruchom composer install bez flagi --no-dev i dopiero potem spakuj katalog modułu do ZIP.

Commitowanie do repozytorium katalogów vendor/, node_modules/, cache/ oraz kluczy API i haseł do bazy.

Jak wykryć: git status pokazuje setki plików bibliotek, a w historii commitów da się znaleźć plik parameters.php lub plik z tokenem.

Jak naprawić: Dodaj .gitignore na początku pracy, wycofaj wrażliwe pliki z historii i unieważnij ujawnione klucze. Klucze trzymaj w zmiennych środowiskowych lub w pliku poza repozytorium.

Zgłaszanie jako błąd Core sytuacji, która wynika z konfiguracji sklepu lub modułu zewnętrznego.

Jak wykryć: Po wyłączeniu modułu zewnętrznego lub powrocie do motywu classic problem znika, a na czystej instalacji nie da się go odtworzyć.

Jak naprawić: Przeprowadź test na czystej instalacji z domyślnym motywem i bez modułów zewnętrznych. Jeśli błąd nadal występuje, zgłoś go w repozytorium Core z krokami reprodukcji.

Zadawanie pytań o wdrożenie i konfigurację w GitHub Issues zamiast na forum lub Slacku.

Jak wykryć: Issue zostaje zamknięte z etykietą pytania lub brakiem informacji, a odpowiedzi nie ma.

Jak naprawić: Do Issues trafiają błędy i propozycje zmian w kodzie (Pull Requesti). Pytania o hosting, konfigurację i wybór modułów kieruj na forum lub kanały społeczności.

Lista kontrolna do odklikania

Podsumowanie

GitHub to warsztat, w którym powstaje PrestaShop, a nie kanał dystrybucji gotowego sklepu. Repozytorium Core, moduły natywne i motyw classic są publiczne, ale do produkcji trafiają paczki wydań, nie branch develop. Przy modułach z GitHuba oceniaj datę ostatniego commita, licencję, otwarte zgłoszenia i wymagania w composer.json, zanim cokolwiek wgrasz. Wiarygodność źródła sprawdzasz przed instalacją, nie po awarii sklepu.

Najczęściej zadawane pytania

Czy mogę zainstalować PrestaShop bezpośrednio z GitHuba na produkcji?

Technicznie tak, ale nie powinieneś. Branch develop zawiera niedokończone zmiany i nie jest wspierany produkcyjnie, a kod z repozytorium nie przechodzi procesu przygotowania paczki wydania. Do produkcji używaj paczki z sekcji Releases albo z prestashop.com.

Czym różni się branch develop od tagu 8.1.x?

Develop to bieżąca praca nad kodem: zmiany trafiają tam codziennie, bez gwarancji stabilności. Tag, np. 8.1.x, oznacza konkretny punkt w historii odpowiadający wydaniu i to on jest podstawą paczek instalacyjnych. Jeśli nie rozwijasz samego PrestaShop, pracuj na tagach.

Jak ocenić, czy moduł z GitHuba jest bezpieczny do wdrożenia?

Sprawdź cztery rzeczy: datę ostatniego commita, liczbę otwartych zgłoszeń i tempo odpowiedzi autora, obecność pliku LICENSE oraz wymagania w composer.json. Dodatkowo porównaj wersję w config.xml z tagiem wydania. Brak testów i brak zmian od ponad 18 miesięcy to sygnały ostrzegawcze.

Gdzie zgłosić błąd w PrestaShop: GitHub czy forum?

Błędy w samym Core zgłaszaj w GitHub Issues w repozytorium PrestaShop/PrestaShop, podając wersję sklepu, wersję PHP, kroki reprodukcji, wynik oczekiwany i faktyczny oraz logi. Forum i Slack służą do pytań o wdrożenia, konfigurację i wybór rozwiązań. Błąd modułu zewnętrznego zgłoś w repozytorium jego autora.

Czy fork modułu na GitHubie jest gorszy od oryginału?

Sam fork nie jest wadą, ale bywa pułapką. Jeśli korzystasz z forka, tracisz aktualizacje i poprawki bezpieczeństwa z oryginału, a przy aktualizacji PrestaShop możesz zostać z kodem, którego nikt nie utrzymuje. Fork ma sens wtedy, gdy sam wprowadzasz zmiany i jesteś w stanie je utrzymywać.

Czy muszę znać Gita, żeby prowadzić sklep na PrestaShop?

Nie. Sklep produkcyjny aktualizujesz z panelu i z paczek wydań, a moduły wgrywasz z plików ZIP. Git przydaje się wtedy, gdy sam tworzysz moduły, śledzisz zmiany w motywie albo pracujesz z agencją, która wersjonuje kod.

Jeśli chcesz zweryfikować, które moduły i rozszerzenia w Twoim sklepie są bezpieczne po aktualizacji, napisz do nas – sprawdzimy kod i wymagania środowiska. Punktem wyjścia jest dokumentacja dla deweloperów dostępna pod devdocs.prestashop-project.org, a zakres prac omówimy na bieżąco z wydaniami PrestaShop.

Źródła i materiały