Last Updated 6 months ago

Problem z OVERRIDE w trakcie instalacji modułu

Nie można zainstalować nakładki: Metoda ... w klasie ... została już nadpisana.


Powyższy komunikat informuje, ż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ł nadpisany 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 pojawia się, jak drugi moduł chce z skorzystać z tego samego override. Wtedy do pliku override w sklepie trzeba zajrzeć i połączyć kod override z modułu z kodem override, który jest już w sklepie.

Moduł w trakcie instalacji nie wie, co jest w pliku override w Twoim sklepie. 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.


Rozwiązanie problemu


Nie istnieje automatyczny system łączenia Override, ponieważ kod plików, które należy połączyć jest za każdym razem inny. Dokumentacja PrestaShop wskazuje, aby pliki Override łączyć ręcznie. Jest to jedyny, poprawny sposób rozwiązania problemu Override.

Do przedstawienia problemu z Override użyjemy przykładowego komunikatu - zwróć uwagę na użyte kolory:

Nie można zainstalować nakładki: Metoda __construct w klasie Order została już nadpisana.

  1. Zalecam włączenie przerwy technicznej w sklepie na czas rozwiązywania problemu.
  2. Należy na czas instalacji zmienić nazwę pliku: /override/classes/Order.php na: /override/classes/_Order.php
  3. Zainstaluj moduł, przy którym występuje problem.
  4. Teraz trzeba połączyć dwa pliki: /override/classes/Order.php oraz /override/classes/_Order.php w jeden plik: /override/classes/Order.php
    1. Jeśli nie znasz się na tym - zalecam kontakt z programistą lub przesłanie nam obu plików jako zgłoszenie na helpdesk.prestashow.pl
    2. Po połączeniu, można usunąć plik: /override/classes/_Order.php
  5. Aby PrestaShop odświeżyła pamięć podręczną - usuń plik: /cache/class_index.php
  6. Wejdź do sklepu i sprawdź czy wszystko dobrze działa i nie ma żadnych komunikatów.
  7. Wyłącz przerwę techniczną w sklepie.

Please Wait!

Please wait... it will take a second!