it-swarm.com.de

Überschreiben Sie MVC-Klassen in Joomla 3

Gibt es in Joomla 3 überhaupt die Möglichkeit, MVC-Klassen zu überschreiben?

Ich habe diesen Thread gefunden, aber es ist für Joomla 2.5. Wie überschreibe ich Kernklassen?

Ich habe MVC-Overrides in Joomla 2.5 erfolgreich durchgeführt, aber jetzt bin ich zu Joomla 3 gewechselt. Dieses Plugin wird jedoch für Joomla 3 nicht unterstützt.

Ich habe diesen Artikel gefunden, aber ich habe keine gute Idee, ein Plugin zu schreiben. Dasselbe Konzept wurde in dem Plugin verwendet, das ich zuvor in Joomla 2.5 verwendet habe.

http://docs.joomla.org/How_to_override_the_component_mvc_from_the_Joomla!_core

Und kann ich diese Klassen erweitern und Methoden überschreiben?

Eigentlich möchte ich die Registrierungs-E-Mail-Vorlage, die Benutzeranmeldeaufgabe überschreiben, um den Benutzertyp und die Profilansicht zu überprüfen und mehr Daten aus meinen Tabellen abzurufen.

Ich habe dieses Plugin ausprobiert https://github.com/phproberto/joomla-mvc-override Aber es gibt Fehler.

    Warning: fopen(D:\xampp\htdocs\my_project/libraries/legacy/module/helper.php): failed to open stream: No such file or directory in D:\xampp\htdocs\my_project\libraries\joomla\filesystem\file.php on line 327
?>

    Fatal error: Class 'JModuleHelperLibraryDefault' not found in D:\xampp\htdocs\my_project\plugins\system\mvcoverride\core\module\helper.php on line 13

Gibt es jemanden, der mit dieser Art von Erfahrung konfrontiert war?

Vielen Dank

7
cha

Witzig, ich habe erst gestern die Implementierung dieses Plugins in einer Site beendet.

Ein Webdev-Kollege und ich haben es für Joomla 3.x modifiziert und es funktioniert.

Es ist hier: https://github.com/ghazal/plg_mvcoverride

In Verbindung mit der Erweiterung nonumber.nl, Advanced Module Manager, wird jedoch ein Fehler ausgegeben:

Call to undefined method JModuleHelper::addIncludePath()

Da ich es eilig hatte, bestand meine sehr unelegante Lösung darin, die erste Funktion zu kommentieren:

    public function onAfterInitialise()
    {

    $moduleHelperContent = JFile::read(JPATH_LIBRARIES.'/cms/module/helper.php');
    $moduleHelperContent = str_replace('JModuleHelper', 'JModuleHelperLibraryDefault', $moduleHelperContent);
    $moduleHelperContent = str_replace('<?php','',$moduleHelperContent);
    eval($moduleHelperContent);
    jimport('joomla.application.module.helper');
    JLoader::register('jmodulehelper', dirname(__FILE__).'/module/helper.php', true);

}

und dann diese 2 Zeilen:

JModuleHelper::addIncludePath(JPATH_BASE.'/code/modules');
JModuleHelper::addIncludePath(JPATH_THEMES.'/'.$template.'/code/modules');

auf diese Weise entfällt in diesem Fall die Möglichkeit, helper.php in einem Modul zu überschreiben.

Ich wollte hier posten, um um Hilfe zu bitten, aber du hast mich geschlagen.

3
ghazal