Форум русской поддержки Joomla!® CMS
08.12.2016, 11:58:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

[FAQ] Несколько модулей в 1 статье

 (Прочитано 22765 раз)
0 Пользователей и 1 Гость смотрят эту тему.
igol
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« : 29.05.2012, 11:45:40 »

Нужно вставить несколько модулей в одну статью. Сейчас вставлен 1 через loadposition, если добавить таким же методом еще один, то не отображается вообще никакой модуль. Опубликовать на странице модуль стандартным методом нельзя, потому что статья не включена в меню.

http://atoll1.me-sto.ru/katalog/92-stoly-i-tumby
Joomla 1.7

Подобной темы не нашел. Не исключено что плохо смотрел, но все же нужен ответ)
« Последнее редактирование: 29.08.2013, 09:56:12 от b2z » Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #1 : 29.05.2012, 12:34:56 »

Синтаксис плагина Content - Load Modules
{loadposition user1} выводит все модули опубликованные в позиции user1 их может быть несколько
{loadmodule mod_login} выводит один модуль в данном случае mod_login
Вы можете привязать статью к меню, а меню не публиковать, привязать модули к меню
Вы можете создать альтернативный шаблон документа (Alternative Layout) и указать в настройках данного материала, тогда модули нужно выводить в шаблоне материала примерно так:
Вывод позиции модуля
Код
<?php //вывод позиции модулей
$document   = JFactory::getDocument();
$renderer   = $document->loadRenderer('modules');
$options    = array('style' => 'xhtml');
$position   = 'user1';
echo $renderer->render($position, $options, null);
?>
или
Код
<?php
$modules =JModuleHelper::getModules('position-0');
foreach ($modules as $module){
  echo JModuleHelper::renderModule($module);
}
?>
Вывод одного модуля
Код
<?php //Вывод одного модуля
$document   = JFactory::getDocument();
$renderer   = $document->loadRenderer('module');
$options    = array('style' => 'raw');
$module     = JModuleHelper::getModule('mod_custom_banners');
$module->params    = "heading=2\nlimit=10"; //как видим даже параметры задавать
echo $renderer->render($module, $options);
?>
или
Код
<?php
$module = JModuleHelper::getModule('mod_banners');
echo JModuleHelper::renderModule($module);
?>
Вывод модуля по id
Код
<?php //выводим модуль по id
$document = JFactory::getDocument();
$renderer = $document->loadRenderer('module');
$params = array('style'=>'xhtml');
$dbo = JFactory::getDBO();
//получить модуль как объект
$dbo->setQuery("SELECT * FROM #__modules WHERE id='111' ");
$module = $dbo->loadObject();
//убрать предупреждение
$module->user = '';
echo $renderer->render($module, $params);
?>
Или те-же {loadposition user1} и {loadmodule mod_login}
Данный синтаксис приведен для любых компонентов Joomla
Если по каким-то причинам компонент не обрабатывает плагин строку{loadposition user1}, то тогда смотрите здесь как подключить плагин к компоненту.
Вы можете передавать параметры в модули - описание как передать параметры.
Вы можете привязать вывод модулей используя различные условия в шаблонах Joomla
« Последнее редактирование: 20.05.2013, 21:06:59 от Fedor Vlasenko » Записан
igol
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 4


« Ответ #2 : 29.05.2012, 12:50:03 »

Допустим если будет статей и каждой нужно вывести 2 модуля. Соответственно содержимое их будет разное. Тогда придется делать 10 альтернативных шаблонов?
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #3 : 29.05.2012, 13:01:40 »

Если модули одни и те-же то только один шаблон(Или передавать какие то параметры для генерации разного контента).
Также можно использовать плагин Sourcerer. Тогда php код можно добавлять прямо в материале и прямо в материале передавать параметры для вызова модулей
Записан
Shustry
Группа развития
*****

Репутация: +727/-3
Offline Offline

Пол: Мужской
Сообщений: 6667


Рисую дизайны


« Ответ #4 : 29.05.2012, 13:36:54 »

...
Вывод одного модуля
Код:
$document   = & JFactory::getDocument();
$renderer   = $document->loadRenderer('module');
$options    = array('style' => 'raw');
$module     = JModuleHelper::getModule('mod_custom_banners');
$module->params    = "heading=2\nlimit=10"; //как видим даже параметры задавать
echo $renderer->render($module, $options);
...
Так работало ещё в J1.5. Для 2.5 надо так:
Код
$params = json_decode( $module->params );
$params->ajparam = JRequest::getVar('ajparam'); //тут оверрайдим наш параметр.
$module->params = json_encode( $params );
 
Мопед не мой, но сам регулярно использую. Автрор - всем-известный-программер: http://old.nonumber.nl/component/kunena/12-modules-anywhere/16652-overriding-parameters-problem-in-joomla-16
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #5 : 29.05.2012, 13:46:51 »

Цитировать
Так работало ещё в J1.5. Для 2.5 надо так:
Shustry приведенный мною код работает в 1.5 и 2.5
Смотрите подробнее в теме как передать параметры модулю еще на один мой велосипед неописанный в документации
Записан
Shustry
Группа развития
*****

Репутация: +727/-3
Offline Offline

Пол: Мужской
Сообщений: 6667


Рисую дизайны


« Ответ #6 : 29.05.2012, 14:07:44 »

Shustry приведенный мною код работает в 1.5 и 2.5
Смотрите подробнее в теме как передать параметры модулю еще на один мой велосипед неописанный в документации
Да мне вообще нравятся Ваши велосипеды. Но в конкретном, данном случае, я немного неверно написал. Ваше решение рабочее но нерациональное.
Код:
$module->params    = "heading=2\nlimit=10"; //как видим даже параметры задавать
Здесь Вы затираете оригинальные параметры. Т.е. необходимо прописать ВСЕ параметры модуля, кроме того, который нужно заменить. А их может быть 20-30... и более.
Логичнее раскодировать из джейсона в объект, поменять только то, что нам надо, обратно закодить. Удобнее же.
Записан
ecolora
Живу я здесь
******

Репутация: +170/-2
Offline Offline

Пол: Мужской
Сообщений: 1430


творец


« Ответ #7 : 29.05.2012, 15:10:04 »

Modules Anywhere

Вам и бесплатной хватит за глаза.
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #8 : 29.05.2012, 15:56:42 »

ecolora Вы считаете, что использование плагина с регулярными выражениями парсящий весь контент сайта. Решением лучше прямого вызова в коде модуля. Приведенный вами плагин делает все то-же, что и описано выше. Но это громоздкий комбайн. И у меня возникают сомнения при использовании плагина от nonumber и безопасностью. Скажем пользователь с фронта разрешено статьи писать постить и т. д. Специально подобранная комбинация символов позволит сработать плагину и вывести желаемый результат. Или я не прав.
Записан
ecolora
Живу я здесь
******

Репутация: +170/-2
Offline Offline

Пол: Мужской
Сообщений: 1430


творец


« Ответ #9 : 29.05.2012, 16:02:35 »

Специально подобранная комбинация символов позволит сработать плагину и вывести желаемый результат. Или я не прав.
С большей загруженностью согласен. Удобство в том, что не надо править код и не надо его еще раз править после апдейтов и потом еще раз... кто знает какие файлы накатит апдейт?

Про комбинацию... не понял я что Вы имеете в виду. Приведите пример.
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #10 : 29.05.2012, 16:08:41 »

Цитировать
и не надо его еще раз править после апдейтов
Зачем править после обновления, здесь мы рассматривали альтернативные макеты вывода. Они останутся после обновления.
Про комбинацию. {module 3} с фронта или в посте напишу.
Записан
midav
Живу я здесь
******

Репутация: +113/-1
Offline Offline

Пол: Мужской
Сообщений: 946



« Ответ #11 : 29.05.2012, 23:05:11 »

Нужно вставить несколько модулей в одну статью. Сейчас вставлен 1 через loadposition, если добавить таким же методом еще один, то не отображается вообще никакой модуль.
А как Вы вставляете ? Нормально должны отображаться модули из разных позиций , вставленые через loadposition .
Записан
Gatispan
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 9


« Ответ #12 : 02.03.2013, 09:03:06 »

Здравствуйте.
Подскажите пожалуйста, а как можно совместить вывод модулей по ID 
Код:
<?php //выводим модуль по id
$document = &JFactory::getDocument();
$renderer = $document->loadRenderer('module');
$params = array('style'=>'xhtml');
$dbo = JFactory::getDBO();
//получить модуль как объект
$dbo->setQuery("SELECT * FROM #__modules WHERE id='100' ");
$module = $dbo->loadObject();
//убрать предупреждение
$module->user = '';
echo $renderer->render($module, $params);
 ?>
с их выводом в шаблоне Yootheme?
Код:
<?php if ($this['modules']->count('sidebar-b')) : ?>
<aside id="sidebar-b" class="grid-box"><?php echo $this['modules']->render('sidebar-b', array('layout'=>'stack')); ?></aside>
<?php endif; ?>
В принципе, вывод работает, но стили не соблюдаются. Подскажате пожалуйста, кто силен.
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1160


желаю вам счастья


« Ответ #13 : 03.03.2013, 15:28:11 »

Благодарю, разобрался
« Последнее редактирование: 03.03.2013, 15:31:19 от borro » Записан
rostis
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Сообщений: 13



« Ответ #14 : 04.09.2013, 00:16:33 »

Прошу помощи! Проблема похожая, а найти решение не могу.
Joomla 1.7. Нужно вывести несколько модулей в одной статье.
Прописываю:
{loadposition position-1}
{loadposition position-2}
Но вместо того, чтобы показать в статье модули из двух разных позиций, плагин почему-то дважды выводит один из модулей - тот, который был создан раньше.
Перевернул форум, но ни у кого не было подобной проблемы.
В общем, нужна помощь, сам не осилю.
П.С. Интересно, что на 1.5 все работает, как положено. Подскажите хоть где копать.
« Последнее редактирование: 04.09.2013, 01:28:43 от rostis » Записан
rostis
Захожу иногда
**

Репутация: +2/-0
Offline Offline

Сообщений: 13



« Ответ #15 : 06.09.2013, 15:07:57 »

Решение предыдущей проблемы, как это часто бывает, оказалось лежало на поверхности.  Smiley
Любую проблему с выводом модулей можно решить благодаря кодам вывода, опубликованным во втором посте этой темы от Fedor Vlasenko. Нужно только поработать с файлом фаблона: templates/ваш шаблон/html/com_content/article/default.php
Открываем файл, вставляем нужный код из этой темы в нужное место, не забывая указать свои позицию или имя модуля, сохраняем файл шаблона под другим именем и задаем его в параметрах материала. И - вуаля! Все выводится хоть вдоль, хоть поперек!
Спасибо, Fedor Vlasenko!  drink
Записан
seva01020304
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 1


« Ответ #16 : 07.09.2013, 12:56:32 »

Здравствуйте, уважаемый друзья!
столкнулся с одной задачей, никак не могу убрать меню слева (Modul) при просмотре товара VirtueMart.

у меня Joomla 2.5 VirtueMart 2.. version и вот позиция моего шаблона  templates/ot_sexyqueen/index.php

Код:
<div class="oMainBlock">
<div class="container">

<?php echo $omg->includeSidebarsAndComponent("sidebar", "standard", "standard"); ?>


</div>
</div>
PS (только в просмотре товара)
Primer http://recmg.com/butik/index.php/shop-store/view/productdetails/virtuemart_product_id/47/virtuemart_category_id/25

с уважением Azad
Записан
Roinmana
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 77


« Ответ #17 : 06.10.2014, 22:17:06 »


Вывод позиции модуля
Код
<?php
$modules =JModuleHelper::getModules('position-0');
foreach ($modules as $module){
  echo JModuleHelper::renderModule($module);
}
?>
Вывожу таким образом позицию и привязываю к ней модуль "Метки". Одна беда - не выводится название модуля (хотя в настройках указано "Отображать"). При вставке модуля в обычном режиме название присутствует. Как доработать, чтобы отображалось название?
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #18 : 06.10.2014, 22:33:45 »

а если в  так попробовать
Код
<?php
$modules =JModuleHelper::getModules('position-0');
$html = '';
foreach ($modules as $module){
$html .= '<h3>' . $module->title. '</h3>' . JModuleHelper::renderModule($module);
}
echo html;
?>
Записан
midav
Живу я здесь
******

Репутация: +113/-1
Offline Offline

Пол: Мужской
Сообщений: 946



« Ответ #19 : 06.10.2014, 23:04:43 »

Вывожу таким образом позицию и привязываю к ней модуль "Метки". Одна беда - не выводится название модуля (хотя в настройках указано "Отображать"). При вставке модуля в обычном режиме название присутствует. Как доработать, чтобы отображалось название?
По умолчанию модули выводятся со стилем 'none' . Чтобы добавить другой стиль вывода, нужно указать его в массиве параметров :
Код
$modules =JModuleHelper::getModules('position-0');
$attr = array('style' => 'xhtml');
foreach ($modules as $module){
  echo JModuleHelper::renderModule($module, $attr);
}
 
Стиль можно указать любой, который нужно . 'xhtml' это один из стилей вывода модулей по умолчанию . Вывод заголовка в нем предусмотрен .
« Последнее редактирование: 06.10.2014, 23:11:02 от midav » Записан
v-v
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 87


« Ответ #20 : 22.12.2014, 04:08:52 »

<?php //Вывод одного модуля
$document   = JFactory::getDocument();
$renderer   = $document->loadRenderer('module');
$options    = array('style' => 'raw');
$module     = JModuleHelper::getModule('mod_custom_banners');
$module->params    = "heading=2\nlimit=10"; //как видим даже параметры задавать
echo $renderer->render($module, $options);
?>

а как быть если мне нужно вывести материалы из двух категорий?
Как это нужно задать в параметрах $module->params ?
Как правильно указать несколько категорий, материалы из которых нужно выводить в модуле?
Пробовал перечислять категории через запятую (\nlimit=10, 11) - не работает. Подскажите пожалуйста, как это можно реализовать
Записан
Roinmana
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 77


« Ответ #21 : 06.03.2016, 23:11:02 »

По умолчанию модули выводятся со стилем 'none' . Чтобы добавить другой стиль вывода, нужно указать его в массиве параметров :
Код
$modules =JModuleHelper::getModules('position-0');
$attr = array('style' => 'xhtml');
foreach ($modules as $module){
  echo JModuleHelper::renderModule($module, $attr);
}
 
Стиль можно указать любой, который нужно . 'xhtml' это один из стилей вывода модулей по умолчанию . Вывод заголовка в нем предусмотрен .
Работает!
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet