Как загрузить модуль в 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 - название позиции, в которой расположены вызываемые модули.

Можно воспользоваться услугами стандартного плагина Content.loadmodule. В этом случае код будет выглядеть так.

<?php
use Joomla\CMS\HTML\HTMLHelper as JHTML;
// .....
?>
<!--- ..... -->
<?php echo trim(JHTML::_('content.prepare', '{loadposition 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();
	}
?>