Czasami istnieje potrzeba zastąpienia klas podstawowych, aby uzyskać większą funkcjonalność lub sprawić, aby niektóre podstawowe funkcje działały w inny sposób. Czy jest jakiś sposób na zastąpienie podstawowych klas? Jeśli to możliwe, jakie problemy mogę rozwiązać, zastępując je?
20
Odpowiedzi:
Tak to mozliwe.
Możesz użyć wtyczki systemowej do zastąpienia klas, przeczytaj ten link i to i to
Dwa problemy, które napotkasz:
musisz przesłonić całą klasę (nie tylko jej części)
jeśli rdzeń został zaktualizowany, a klasa również zaktualizowana / zmieniona, musisz zaktualizować swoje zastąpienie (w razie potrzeby).
źródło
Jakiś czas temu stworzyłem wtyczkę, która pozwala ci przesłonić podstawowe klasy, ale wciąż jest ofiarą problemów wskazanych przez @jackJoe w swojej odpowiedzi. Pozwala jednak na czyste zastępowanie.
https://gist.github.com/dongilbert/3237387
źródło
components/com_content/models/articles.php
.Dla użytkowników Joomla 3 - sprawdź te. To ci pomoże.
Zastąp klasy MVC w Joomla 3
Wtyczka - https://github.com/ghazal/plg_mvcoverride
http://docs.joomla.org/How_to_override_the_component_mvc_from_the_Joomla!_core
Dzięki /joomla//users/270/ghazal
źródło
Byłem na tym bardzo długo i obiecałem Donowi, że kiedy skończę, poda więcej szczegółów na ten temat.
Musiałem przesłonić Joomla MVC dla komponentów i powiedzieć Joomla, aby szukał zastąpień również w folderze HTML wtyczki, nie tylko w folderze HTML szablonu.
Nigdy nie podobało mi się, gdy programiści faktycznie wybrali domyślną klasę Joomla i zepsuli ją, więc raczej jeśli to możliwe, rozszerzam tę klasę, zamiast coś hamować.
Mój proces wykonuje następujące czynności.
oto obraz raczej http://prntscr.com/3d9syq
Pierwsze części poniższego fragmentu to sprawdzenie, gdzie jest użytkownik. Jeśli ma zamiar zaktualizować Joomla, usuwam pliki klasy tymczasowej, które zostały utworzone, aby upewnić się, że otrzymamy nowe po zakończeniu aktualizacji, a nie o numer JackJoe 2)
źródło