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.
Wady
  • 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 ...
Powyższe komunikaty informują, że nastąpił konflikt plików Override. Moduł, który próbujemy zainstalować chce nadpisać plik override, który jest już nadpisany przez inny moduł lub został utworzony ręcznie.Jeśli w Twoim sklepie nie ma override, to pierwszy instalowany moduł, który chce wykorzystać override, zainstaluje się bez problemu - zajmie on override i nie wystąpi problem.

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.
W każdym przypadku trzeba manualnie połączyć kod override z modułu z kodem override, który jest już w sklepie.

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.
  1. Włącz przerwę techniczną na czas czas rozwiązywania problemu lub pracuje na kopi developerskiej sklepu.
  2. Należy na czas instalacji zmienić nazwę pliku:
    1. /override/classes/Order.php
    2. na: /override/classes/_Order.php
  3. Zainstaluj moduł, przy którym występuje problem.
  4. Połącz pliki:
    1. /override/classes/Order.php
    2. /override/classes/_Order.php
    3. w jeden plik: /override/classes/Order.php
  5. Po połączeniu, usuń plik: /override/classes/_Order.php
  6. Aby PrestaShop odświeżyła pamięć podręczną - usuń plik: /cache/class_index.php
  7. Wejdź do sklepu i sprawdź czy wszystko dobrze działa i nie ma żadnych komunikatów.
  8. Wyłącz przerwę techniczną w sklepie.

Please Wait!

Please wait... it will take a second!

Kliknij by skopiować