Как я могу отобразить модули Joomla в компоненте?
У меня есть компонент с несколькими категориями игр, и я хочу отобразить другой баннер в зависимости от категории. Мне нужно, чтобы баннер (и ссылка) был настраиваемым, поэтому это не просто случай показа categoryX.jpg
или что-то еще.
Я видел эту страницу справки Joomla по другому вопросу, но она, похоже, отображает только тип модуля, а не один конкретный модуль. Я хотел бы использовать различные модули mod_custom и отображать тот, который соответствует категории (я могу хранить идентификатор каждого модуля, если это необходимо).
Есть идеи?
Ответы - Как я могу отобразить модули Joomla в компоненте? / How can I display Joomla modules within a component?

29.10.2010 12:57:46
Вы могли бы создать новый модуль?
Если каждая категория отображается в строке запроса (catid=X) , то можно применить аналогичный подход к https://support.pillwax.com/open-source/doku.php?id=joomla:header_image .
Кроме того, эта ссылка может действительно сделать это для вас.

29.10.2010 01:09:04
Это можно сделать в процессе 2 шагов:
Используйте плагин "загрузить модуль в статью", чтобы разрешить себе доступ к модулю с помощью вызова плагина, например:
{модуль [*mod_id*]} // где *mod_id* - идентификатор модуля
Теперь, когда вы можете вызвать плагин для размещения вашего модуля в любом месте, вам нужно перейти к коду представления вашего / компонента, в который вы хотите добавить модуль, и добавить этот код:
echo JHTML::_('content.подготовка', ' {module [*mod_id*]}');
Пожалуйста, смотрите эту ссылку - http://www.alltogetherasawhole.org/group/developers/forum/topics/running-joomla-content-plugins -относительно пункта № 2. Я пытался сделать то же самое, и я обнаружил, что это не сработало, и причиной этого был комментарий, который вы можете найти на ссылке страницы выше:
"Я заметил, что некоторые плагины на самом деле ожидают option=com_content для правильной обработки onPrepareContent, поэтому вы можете "обмануть" их, вызвав JRequet::setVar и восстановив правильные значения после триггера."

echo JHTML::_('content.prepare', '{loadposition contact-banner}');
отлично сработало для меня.

01.11.2010 07:31:31
В Joomla встроена такая функциональность. В элементах содержимого можно использовать команду {loadposition XX}. Вы можете указать пользовательские позиции модулей, которые не отображаются в шаблоне, чтобы убедиться, что у вас есть правильный модуль в правильной статье.
http://docs.joomla.org/How_do_you_put_a_module_inside_an_article%3F

27.02.2015 10:41:28
Если вы хотите показать модуль в PHP-коде, то используйте этот код, он работал для меня :
<?php echo JHTML::_('content.prepare', '{loadposition position-2}'); ?>
Если вы хотите показать модуль внутри html-контента, то просто поместите этот код, где вы хотите показать модуль.
{loadposition position-2}
Он загружает все модули, которые назначены на позицию-2.


24.07.2019 07:38:17
Вы также можете использовать модуль визуализации Joomla
$doc = JFactory::getDocument();
$renderer = $doc->loadRenderer('modules');
$position = 'custom_position_name';
$options = array('style' => 'raw');
echo $renderer->render($position, $options, null);
Просто голова вверх, наряду с назначением позиции модуля, этот модуль также должен быть установлен на "отображение на всех страницах".