Insertar/rederizar modulos en componentes personalizados joomla
Cuando estamos desarrollando un componente, en ocasiones necesitamos insertar/renderizar un modulo específico (ejem.: mod_mainmenu) o varios modulos de una posición determinada (ejem.: posision "left"), el siguiente código nos permitirá renderizar correctamente los modulos en nuestro componente:
A.- Renderizar un módulo específico:
jimport( 'joomla.application.module.helper' ); $module = JModuleHelper::getModule( 'mainmenu', 'Menu principal' ); $attribs['style'] = 'xhtml'; echo JModuleHelper::renderModule( $module, $attribs );
B.- Renderizar los módulos de una determinada posición:
jimport( 'joomla.application.module.helper' );
$modules = JModuleHelper::getModules( 'top' );
$attribs['style'] = 'xhtml';
echo JModuleHelper::renderModule( $module, $attribs );
Explicación
Primero importamos la clase "JModuleHelper" para poder trabajar con sus atributos y metodos:
jimport( 'joomla.application.module.helper' );
Con el método "getModule" de la clase "JModuleHelper" obtenemos un modulo específico y por eso debemos de pasar 2 parámetros con el tipo de módulo y el título ( 'mainmenu', 'Menu principal' ) y los guardamos en el objeto "$module":
$module = JModuleHelper::getModule( 'mainmenu', 'Menu principal' );
Con el método "getModules" de la clase "JModuleHelper" optenemos todos los modulos de una determinada posición en la que solo le pasamos un único parámetro con el nombre de la posición que deseamos renderizar ('top'):
$modules = JModuleHelper::getModules( 'top' );
Por último rederizamos el módulo con un "echo" del método "renderModule" de la clase "JModuleHelper" donde pasamos dos parametros ($module, $attribs):
echo JModuleHelper::renderModule( $module, $attribs );
donde $module es el objeto que contiene nuestro/s modulo/s y $attribs es un array opcional de atributos que contiene la información del codigo Chrome, se trata de una pequeña cantidad de plantillas HTML predefinidas que se inserta antes, después o alrededor de la salida de cada módulo, y que pueden ser editadas con CSS.
