Joomla php вывести модуль

CB9TOIIIA / view-module-teml-joomla.php

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

$ document = JFactory :: getDocument ();
$ renderer = $ document -> loadRenderer ( ‘modules’ );
$ options = array ( ‘style’ => ‘xhtml’ );
$ position = ‘user1’ ;
echo $ renderer -> render ( $ position , $ options , null );
?>
$ modules = JModuleHelper :: getModules ( ‘position-0’ );
foreach ( $ modules as $ module )
echo JModuleHelper :: renderModule ( $ module );
>
?>
$ document = JFactory :: getDocument ();
$ renderer = $ document -> loadRenderer ( ‘module’ );
$ options = array ( ‘style’ => ‘raw’ );
$ module = JModuleHelper :: getModule ( ‘mod_custom_banners’ );
$ module -> params = » heading=2 \n limit=10 «; //как видим даже параметры задавать
echo $ renderer -> render ( $ module , $ options );
?>
$ module = JModuleHelper :: getModule ( ‘mod_banners’ );
echo JModuleHelper :: renderModule ( $ module );
?>
$ document = JFactory :: getDocument ();
$ renderer = $ document -> loadRenderer ( ‘module’ );
$ params = array ( ‘style’ => ‘xhtml’ );
$ dbo = JFactory :: getDBO ();
//получить модуль как объект
$ dbo -> setQuery (» SELECT * FROM #__modules WHERE «);
$ module = $ dbo -> loadObject ();
//убрать предупреждение
$ module -> user = » ;
echo $ renderer -> render ( $ module , $ params );
?>

Источник

Как добавить позицию модуля внутрь любого компонента Joomla

Заметка: активирована адаптивная версия сайта, которая автоматически подстраивается под небольшой размер Вашего браузера и скрывает некоторые детали сайта для удобства чтения. Приятного просмотра!

Добрый день, уважаемые читатели и постоянные подписчики блога Site on! В прошлых статьях этого раздела я писал про создание собственного шаблона для Джумла с нуля, так вот сегодняшняя тема будет узконаправленным продолжением.

Бывают случаи, когда нам необходимо поместить позицию модуля не в правой или левой колонке, а внутри какого-нибудь компонента, прямо в его теле. Например, мы находимся на странице категории VirtueMart2:

категория VirtueMart2

И нам необходимо вставить какой-нибудь модуль (слайд-шоу, карусель товаров и тд.) между пагинацией и товарами:

позиция для модуля

Это было бы легко сделать, если нашей задачей было бы вставить модуль под пагинацией, так как на пагинации вывод категории VM заканчивается (то есть заканчивается вывод компонента ), и продолжается тело шаблона:

component

внутри component

Для этого нам необходимо зайти в код компонента. В нашем примере нужно зайти в файл, отвечающий за вывод категории /components/com_virtuemart/views/category/tmpl/default.php либо в /templates/имя_шаблона/html/com_virtuemart/category/default.php если у вас есть этот файл по такому пути.

из прошлой статьи здесь использовать нельзя, так как мы находимся в компоненте, а не в шаблоне. Компонент просто не поймёт, что с ней делать, и оставит эту строку, как есть (не подставит вместо неё модули).

Вместо этой конструкции мы должны использовать PHP класс Joomla под названием JModuleHelper и его методы getModules и renderModule, например:

// подключаем нужный класс, один раз на странице, перед первым выводом $module = JModuleHelper::getModules('our-module'); // получаем в массив все модули из заданной позиции $attribs['style'] = 'xhtml'; // задаём, если нужно, оболочку модулей (module chrome) echo JModuleHelper::renderModule($module[0], $attribs); // выводим первый модуль из заданной позиции ?>

Обратите внимание, этот код нужно использовать если вы планируете выводить в этой позиции один модуль, если их будет несколько, то нужно делать так:

// изменили название переменной с единственного на множественное число для понятности $attribs['style'] = 'xhtml'; foreach($modules as $module)< // в цикле перебираем и выводим все модули echo JModuleHelper::renderModule($module, $attribs); > ?>

внутри component

В нашей только что созданной позиции our-module я вывел стандартный модуль Breadcrumbs (хлебные крошки, навигация по сайту). Вы же можете вывести любой другой модуль, никаких ограничений.

В заключении стоит обратить внимание, что таким образом можно штамповать сколько угодно позиций в любых местах любых компонентов, это придаёт Джумле совершенную гибкость в создании собственных шаблонов и сайта в целом.

Другие статьи по теме шаблонов в Joomla

Источник

Вставка модуля Joomla в код шаблона или компонента

Для того, чтобы вставить работающий код php в любое место программного кода Joomla или в шаблон сайта или адмики, можно использовать прямую вставку php-кода или же, если требуется вставлять однотипные куски кода, можно их подружать из файлов, расположенных на сервере. Как сделать последнее подробно описано в → этой статье. Однако, изменение кода компонентов Joomla и/или её шаблонов связано с расходом времени на доступ до необходимых файлов, иногда расположенных вне зоны доступа из админки. В этой статье рассмотрим, как вставить модуль Joomla в код шаблона или компонента. Это позволит при необходимости быстро вносить требуемые правки через Менеджер модулей в админке Joomla.

Предварительная подготовка к вставке модуля Joomla в код шаблона или компонента

Для того, чтобы вставить модуль Joomla в код шаблона или компонента стандартными средствами CMS, требуется задать его позицию. Использовать стандартные позиции шаблона не всегда удобно, — они могут быть заняты под нужды шаблона. Поэтому первым делом нужно задать новую позицию в файле конфигурации шаблона templateDetails.xml . О том, как это сделать подробно описано → в этой статье.

После того, как позиция модуля прописана в файле конфигурации шаблона templateDetails.xml нужно присвоить её модулю. Как это сделать в админке можно прочитать → по этой ссылке.

Теперь, когда у модуля есть собственная позиция, его можно вызвать в любом месте программного кода Joomla.

Код для вставки модуля Joomla в шаблон или компонент

Код для вставки модуля Joomla в шаблон или компонент выглядит следующим образом:

jimport( 'joomla.application.module.helper' ); $module = JModuleHelper::getModules('position-N'); $attribs['style'] = 'none'; echo JModuleHelper::renderModule($module[0], $attribs);

Первая строчка jimport( ‘joomla.application.module.helper’ ); вызывает подключение класса module.helper . Она требуется лишь в том случае, если этот класс не был подключен ранее. Нет смысла в повторных определениях. Самым простым способом определить это — использовать код вызова модуля без это строчки.

Вторая строчка $module = JModuleHelper::getModules(‘position-N’); передаёт переменной $module заполняем массив модулей, опубликованных в позиции position-N .

Третья строчка $attribs[‘style’] = ‘none’; может принимать два значения:

  1. указываем стиль вывода модуля ‘none’ если не нужно выводить заголовок модуля;
  2. указываем стиль вывода модуля ‘xhtml’, если нужно вывести заголовок и его отображение включено в настройках модуля в админке.

Четвёртая строчка echo JModuleHelper::renderModule($moduleUp[0], $attribs); выдаёт первый модуль из этой позиции.

Как вариант, можно не сразу выдавать этот модуль, а передать его в переменную. А затем переменную вывести в нужном месте кода:

$moduleN = JModuleHelper::renderModule($moduleUp[0], $attribs);

Есть ещё вариант, когда нужно вывести все модули из заданной позиции, тогда нужно использовать цикл для перебора всех значений массива $module :

Если требуется вывести только определённые модули из позиции position-N , нужно указать номер расположения модуля в этом массиве при его вызове $moduleUp[ N ] в первом случае, или ввести условия при переборе элементов массива в цикле во втором случае.

Резюме

Таким образом, парой строчек кода можно управлять выводом модулей в практически любом месте шаблона или компонента Joomla 3. При этом не требуется создавать никаких дополнительных файлов для хранения php-кода. Модули, как наверное понятно всем, хранятся в базе данных сайта и управляются стандартными средствами через админку Joomla.

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! 😉

Источник

zaurmag / view-module-teml-joomla.php

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters

$ document = JFactory :: getDocument ();
$ renderer = $ document -> loadRenderer ( ‘modules’ );
$ options = array ( ‘style’ => ‘xhtml’ );
$ position = ‘user1’ ;
echo $ renderer -> render ( $ position , $ options , null );
?>
$ modules = JModuleHelper :: getModules ( ‘position-0’ );
foreach ( $ modules as $ module )
echo JModuleHelper :: renderModule ( $ module );
>
?>
$ document = JFactory :: getDocument ();
$ renderer = $ document -> loadRenderer ( ‘module’ );
$ options = array ( ‘style’ => ‘raw’ );
$ module = JModuleHelper :: getModule ( ‘mod_custom_banners’ );
$ module -> params = » heading=2 \n limit=10 «; //как видим даже параметры задавать
echo $ renderer -> render ( $ module , $ options );
?>
$ module = JModuleHelper :: getModule ( ‘mod_banners’ );
echo JModuleHelper :: renderModule ( $ module );
?>
$ document = JFactory :: getDocument ();
$ renderer = $ document -> loadRenderer ( ‘module’ );
$ params = array ( ‘style’ => ‘xhtml’ );
$ dbo = JFactory :: getDBO ();
//получить модуль как объект
$ dbo -> setQuery (» SELECT * FROM #__modules WHERE «);
$ module = $ dbo -> loadObject ();
//убрать предупреждение
$ module -> user = » ;
echo $ renderer -> render ( $ module , $ params );
?>

Источник

Читайте также:  Colors in c sharp
Оцените статью