it-swarm-es.com

Anular clases de MVC en Joomla 3

¿Hay alguna forma de anular las clases MVC en Joomla 3?

He encontrado este hilo pero es para Joomla 2.5. ¿Cómo anular las clases principales?

He hecho anulaciones MVC en Joomla 2.5 con éxito, pero ahora me he mudado a Joomla 3. Pero ese complemento no es compatible con Joomla 3.

Encontré este artículo pero no tengo una buena idea para escribir un complemento. El mismo concepto se ha utilizado en el complemento que utilicé anteriormente en Joomla 2.5.

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

¿Y también puedo extender esas clases y sobrescribir métodos?

En realidad, quiero anular la plantilla de correo electrónico de registro, la tarea de inicio de sesión del usuario para verificar el tipo de usuario y la vista de perfil para recuperar más datos de mis tablas.

Probé este complemento- https://github.com/phproberto/joomla-mvc-override Pero da errores.

    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

¿Hay alguien que se enfrentó a esta amable experiencia?

Gracias

7
cha

Es curioso, acabo de terminar ayer la implementación de este complemento en un sitio.

Un compañero webdev y lo modifiqué para joomla 3.xy funciona.

Está aquí: https://github.com/ghazal/plg_mvcoverride

Sin embargo, arroja un error cuando se combina con una extensión nonumber.nl, Advanced Module Manager:

Call to undefined method JModuleHelper::addIncludePath()

Al tener prisa, mi solución poco elegante fue comentar la primera función:

    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);

}

y luego, estas 2 líneas:

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

eliminando así la posibilidad, en este caso, de usarlo para anular helper.php en un módulo.

Estaba a punto de publicar aquí para pedir ayuda, pero me ganaste.

3
ghazal