Как загрузить модуль в PHP-коде Joomla?
Решение.
В нужном месте вставляем следующий код:
<?php jimport( 'joomla.application.module.helper' ); $module = JModuleHelper::getModule('MODULETYPE','MODULETITLE'); $attribs['style'] = 'STYLE'; echo JModuleHelper::renderModule( $module, $attribs ); ?>
Где MODULETYPE - тип загружаемого модуля (например, mainmenu), MODULETITLE - заголовок модуля, STYLE - стиль (например, xhtml).
Другой вариант - загрузка всех модулей в определенной позиции:
<?php jimport('joomla.application.module.helper'); $modules = JModuleHelper::getModules('POSITION'); foreach($modules as $module) { echo JModuleHelper::renderModule($module); } ?>
Где POSITION - название позиции, в которой расположены вызываемые модули.
Если нужно вывести контент модуля внутри другого модуля, то делаем так:
<?php $module2 = JModuleHelper::getModule('MODULETYPE','MODULETITLE'); echo $module2->content; ?>
Переменную $module использовать нельзя, т.к. она содержит параметры родительского модуля.
Вывод системных сообщений можно организовать так:
<?php $doc = & JFactory::getDocument(); $class = 'JDocumentRendererMessage'; if (!class_exists($class)) { require_once JURI::base(true) . '/libraries/joomla/document/html/renderer/message.php'; } $Messages = new $class($doc); $mes = JFactory::getApplication()->getMessageQueue(); if (is_array($mes) && !empty($mes)) { echo $Messages->render(); } ?>