Last Updated about a month ago
OVERRIDE - omówienie i problemy
Wszystkie nowe moduły PrestaShow powstałe po 1 stycznia 2025 roku nie korzystają z plików override, aby zagwarantować jak największą kompatybilność. Część modułów PrestaShow powstałych przed 2025 rokiem korzysta z plików Override.Czym są pliki Override w PrestaShop?
W PrestaShop pliki Override to mechanizm pozwalający na nadpisywanie (rozszerzanie lub modyfikowanie) standardowych klas, kontrolerów i funkcji bez edytowania oryginalnych plików rdzenia (/classes, /controllers itp.). Dzięki temu można dostosować działanie sklepu do własnych potrzeb, a jednocześnie (teoretycznie) ułatwić aktualizacje, ponieważ modyfikacje są przechowywane osobno.Zalety
- Oddziela modyfikacje od plików systemowych.
- Ułatwia śledzenie własnych zmian.
- Unikasz edycji rdzenia, co jest niezalecane.
- Override mogą się „gryźć” z aktualizacjami.
- Jeśli kilka modułów używa override tej samej klasy, mogą powstać konflikty.
- Zarządzanie plikami override możliwe jest tyko manualnie (przez programistę).
- W PrestaShop 9 mechanizm override został uznany za przestarzały, ale cały czas można z niego korzystać.
Komunikaty błędów Override
W plikach override w Twoim sklepie może być kod dowolnego innego modułu, który instalowałeś wcześniej lub kod programisty, który przez pliki override modyfikował sklep:- Nie można zainstalować nakładki: Metoda ... w klasie ... została już nadpisana.
- Nie można Install modułu .... Nadpisywany plik ... koliduje z istniejącym plikiem w ...
Problem z override pojawiają się, gdy:
- moduł w trakcie instalacji chce utworzyć swój override, ale dany plik już istnieje na serwerze.
- nie usunąłeś manualnie kodu z override po odinstalowanym module.
- usunąłeś lub błędnie zmodyfikowałeś pliki override.
Rozwiązanie problemu z Override
Nie istnieje automatyczny system łączenia Override, ponieważ kod plików, które należy połączyć jest nie znany dla modułu. Oficjalna dokumentacja PrestaShop wskazuje, aby pliki Override nadpisywać ręcznie - jest to jedyny, poprawny sposób rozwiązania problemu Override.Jeśli nie znasz się na tym - zalecamy otworzenie zgłoszenia na helpdesk.prestashow.pl lub zakup usługi instalacji modułu, w ramach której rozwiążemy Twoje problemy z Override.
Problem:
Nie można zainstalować nakładki: Metoda __construct w klasie Order została już nadpisana.
Rozwiązanie:
Do przedstawienia problemu z Override użyjemy przykładowego komunikatu - zwróć uwagę na użyte kolory.
- Włącz przerwę techniczną na czas czas rozwiązywania problemu lub pracuje na kopi developerskiej sklepu.
- Należy na czas instalacji zmienić nazwę pliku:
- /override/classes/Order.php
- na: /override/classes/_Order.php
- Zainstaluj moduł, przy którym występuje problem.
- Połącz pliki:
- /override/classes/Order.php
- /override/classes/_Order.php
- w jeden plik: /override/classes/Order.php
- Po połączeniu, usuń plik: /override/classes/_Order.php
- Aby PrestaShop odświeżyła pamięć podręczną - usuń plik: /cache/class_index.php
- Wejdź do sklepu i sprawdź czy wszystko dobrze działa i nie ma żadnych komunikatów.
- Wyłącz przerwę techniczną w sklepie.