Manchmal müssen Kernklassen überschrieben werden, um mehr Funktionalität zu erhalten, oder einige Kernfunktionen müssen auf andere Weise funktionieren. Gibt es eine Möglichkeit, Kernklassen zu überschreiben? Wenn es dann möglich ist, welchen Problemen kann ich begegnen, indem ich sie überschreibe?
20
Antworten:
Ja, es ist möglich.
Sie können ein System-Plugin verwenden, um die Klassen zu überschreiben. Bitte lesen Sie diesen Link und dies und das
Zwei Probleme, mit denen Sie konfrontiert sind:
Sie müssen die gesamte Klasse überschreiben (nicht nur Teile davon)
Wenn der Core aktualisiert und die Klasse ebenfalls aktualisiert / geändert wird, müssen Sie Ihre Außerkraftsetzung aktualisieren (falls erforderlich).
quelle
Ich habe vor einiger Zeit ein Plugin erstellt, mit dem Sie Kernklassen überschreiben können, das jedoch immer noch den Problemen zum Opfer fällt, auf die @jackJoe in seiner Antwort hingewiesen hat. Sie können die Außerkraftsetzungen jedoch sauber ausführen.
https://gist.github.com/dongilbert/3237387
quelle
components/com_content/models/articles.php
.Für Joomla 3 Benutzer - überprüfen Sie diese. Es wird dir helfen.
Überschreiben Sie MVC-Klassen in Joomla 3
Plugin - https://github.com/ghazal/plg_mvcoverride
http://docs.joomla.org/How_to_override_the_component_mvc_from_the_Joomla!_core
Vielen Dank an /joomla//users/270/ghazal
quelle
Ich war sehr lange dabei und habe Don versprochen, dass ich, sobald ich fertig bin, weitere Details dazu geben werde.
Ich musste Joomla MVC für Komponenten überschreiben und Joomla anweisen, auch in meinem HTML-Plug-In-Ordner nach Überschreibungen zu suchen, nicht nur innerhalb des HTML-Vorlagenordners.
Was ich nie gemocht habe, ist, wenn Entwickler tatsächlich die Joomla-Standardklasse nehmen und damit herumspielen, also erweitere ich diese Klasse lieber, wenn ich kann, anstatt etwas zu bremsen.
Mein Prozess folgt.
Hier ist das Bild eher http://prntscr.com/3d9syq
Der erste Teil des Snippets unten überprüft, wo sich der Benutzer befindet, wenn er Joomla aktualisieren möchte. Ich lösche die temporären Klassendateien, die erstellt wurden, um sicherzustellen, dass wir nach Abschluss des Updates neue Dateien erhalten, die sich dann um die JackJoe-Nummer kümmern 2.
quelle