Добавить позицию модуля в компонент
Стандартными средствами вставить в компонент позицию модуля нельзя! Хотя очень зря.
Рабочий вариант для вставки модуля в компонент.
Обычным методом как в шаблоне:
<jdoc:include type="modules" name="module" />
не получается...
Очевидно, что самым простым способом будет следующее решение:
<?php echo JHtml::_('content.prepare', '{/loadposition position-name}'); //Удалить слэш перед loadposition ?>
главное, чтобы был включен плагин Content - Load modules (вставка модулей).
Нашел ещё такое решение:
Вместо этой конструкции мы должны использовать PHP класс Joomla под названием JModuleHelper и его методы getModules и renderModule, например:
<?php jimport( 'joomla.application.module.helper' ); // подключаем нужный класс, один раз на странице, перед первым выводом $module = JModuleHelper::getModules('our-module'); // получаем в массив все модули из заданной позиции $attribs['style'] = 'xhtml'; // задаём, если нужно, оболочку модулей (module chrome) echo JModuleHelper::renderModule($module[0], $attribs); // выводим первый модуль из заданной позиции ?>
Заметки:
- В данном варианте мне не нужен стиль позиции ($attribs).
- Так же, если в данной позиции модуль отсутствовал, выдавалась ошибка - нужно сделать проверку.
- Выводил модуль в компоненте Zoo, там видимо уже подключен класс JModuleHelper, потому как заработало и без него.
- Можно не создавать переменную $module, написать прям как есть. (не стал убирать)
Использую вот такой вариант:
<?php
$module = JModuleHelper::getModules('order');
if ($module) {
echo JModuleHelper::renderModule($module[0]);
}
?>
Так же обратите внимание, этот код нужно использовать если вы планируете выводить в этой позиции один модуль, если их будет несколько, то нужно делать так:
<?php jimport( 'joomla.application.module.helper' ); $modules = JModuleHelper::getModules('our-module'); // изменили название переменной с единственного на множественное число для понятности $attribs['style'] = 'xhtml'; foreach($modules as $module){ // в цикле перебираем и выводим все модули echo JModuleHelper::renderModule($module, $attribs); } ?>
Ссылки и благодарности
Спасибо: site-on.net