Każdy sklep PrestaShop z dłuższą historią ma jakiś własny kod: moduły, overrides, zmiany w szablonach. Sposób jego organizacji decyduje o tym, ile pracy kosztuje każda aktualizacja platformy i jak trudno jest nowym programistom dołączyć do projektu.
Zasada pierwsza: nie modyfikuj plików rdzenia
Modyfikowanie plików w katalogu classes/, controllers/ lub gdziekolwiek poza modules/ i themes/ sprawi, że aktualizacja PrestaShop nadpisze Twoje zmiany. To fundamentalna zasada, której złamanie kosztuje przy każdym update. Każda potrzeba modyfikacji rdzenia powinna skłonić do szukania rozwiązania przez hook lub override.
Moduły jako preferowane rozszerzenie
Moduł w PrestaShop to izolowana jednostka kodu z własnym katalogiem, klasą i metodami hook. Nowa funkcjonalność powinna trafiać do modułu, nie do pliku rdzenia. Moduł można włączyć, wyłączyć i zaktualizować niezależnie od reszty systemu. To czyni kod modułowy bardziej zarządzalny przy długoterminowym utrzymaniu.
Overrides: kiedy i z umiarem
Override pozwala nadpisać klasę PS własną wersją bez modyfikowania oryginału. Pliki override trafiają do katalogu override/ i są automatycznie ładowane przez PS zamiast oryginałów. Używaj overrides gdy hook nie istnieje dla potrzebnej modyfikacji, ale pamiętaj że każdy override może konfliktować z innym modułem robiącym to samo.
Jeden sklep, jeden override per klasa
PrestaShop nie obsługuje kilku override tej samej klasy z różnych modułów. Jeśli dwa moduły próbują nadpisać tę samą klasę, mogą kolidować. W projektach z wieloma modułami własnymi warto centralizować overrides w jednym miejscu i dokumentować dlaczego dany override istnieje.
Wersjonowanie kodu
Własne moduły i overrides powinny być w repozytorium Git, oddzielnie od plików PS. Nigdy nie commituj całego katalogu PS do repo - to kilkadziesiąt tysięcy plików, które zmieniają się przy każdej aktualizacji. Repo powinno zawierać tylko kod własny projektu.
Dokumentacja własnych zmian
Przy przekazaniu projektu nowemu programiście lub przy wznowieniu prac po przerwie, lista własnych modyfikacji i powodów ich istnienia jest bezcenna. README z opisem modułów, overrides i niestandardowej konfiguracji skraca czas orientacji w projekcie z dni do godzin.