Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 13 Ответов
  • 1772 Просмотров
*

tomclancys

  • Захожу иногда
  • 152
  • 3 / 0
Здравствуйте.

Возник вопрос, как можно присвоить альтернативный макет модулю/компоненту через сам шаблон.
Пример - у нас 2 шаблона и для каждого шаблона свои альтернативные макеты модулей/компонентов, получается мы их дублируем в панели управления но по сути они выводят одно и тоже но в разных стилях.

В каждом модуле/компоненте есть параметр отвечающий за макет по умолчанию:
Код
$params->get('layout', 'default');

Буду благодарен за ответы. Погуглил, ничего подобного не нашёл.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
как можно присвоить альтернативный макет модулю/компоненту через сам шаблон.
у нас 2 шаблона и для каждого шаблона свои альтернативные макеты модулей/компонентов
Разве вы не ответили на свой вопрос? Или у вас слово "шаблон" еще имеет другое значение?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

tomclancys

  • Захожу иногда
  • 152
  • 3 / 0
Нет, не ответил.

В самом шаблоне нам нужно например один и тот же модуль вывести два раза с разными альтернативными макетами. Вот ещё пример:

Шаблон - /tamplate/name/
Альтернативный макет №1 - /tamplate/name/html/module1/new1.php
Альтернативный макет №2 - /tamplate/name/html/module1/new2.php

В идеале было бы конечно как то так но в документации такого нету:
<jdoc:include type="modules" name="module1" style="none" layout="new1" />
<jdoc:include type="modules" name="module2" style="none" layout="new2" />
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
А разве копия модуля со своим макетом не дает такого результата?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

tomclancys

  • Захожу иногда
  • 152
  • 3 / 0
Можно так.
Спасибо. Это уже ближе к ответу. Но всё равно не ясно как задать макет модуля. Таким образом не работает:
Код
$document   = & JFactory::getDocument();
$renderer   = $document->loadRenderer('module');
$options    = array('style' => 'none');
$module     = JModuleHelper::getModule('mod_menu');
$module->params    = "layout=new1";
echo $renderer->render($module, $options);
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Код: php-brief
$module->params = '{"layout":"new1"}';
Но я так и не понял, зачем вы делаете это в шаблоне?
Не будь паразитом, сделай что-нибудь самостоятельно!
*

fbr

  • Завсегдатай
  • 1625
  • 189 / 7
Если правильно вас понял, то наверное можно проще

Шаблон 1: просто переименуйте назад new1 -> default
Шаблон 2: new2 -> default

Теперь в шаблонах по умолчанию будет выводить разные макеты под одним именем
*

tomclancys

  • Захожу иногда
  • 152
  • 3 / 0
Если правильно вас понял, то наверное можно проще

Шаблон 1: просто переименуйте назад new1 -> default
Шаблон 2: new2 -> default

Теперь в шаблонах по умолчанию будет выводить разные макеты под одним именем
new1 и new2 в каждом шаблоне есть.
*

tomclancys

  • Захожу иногда
  • 152
  • 3 / 0
Код: php-brief
$module->params = '{"layout":"new1"}';
Но я так и не понял, зачем вы делаете это в шаблоне?
Модуль так даже не выводится.
Код
$document   = & JFactory::getDocument();
$renderer   = $document->loadRenderer('module');
$options    = array('style' => 'none');
$module     = JModuleHelper::getModule('mod_menu');
$module->params = '{"layout":"default"}';
echo $renderer->render($module, $options);       

*

tomclancys

  • Захожу иногда
  • 152
  • 3 / 0
Всё, разобрался. Заработало так:
Код
      jimport( 'joomla.application.module.helper' );
      $module = JModuleHelper::getModule( 'mod_menu' );
      $attribs = array('style' => 'none');
      $module->params = "menutype=mainmenu\nlayout=default\nshowAllChildren=1";
      echo JModuleHelper::renderModule($module, $attribs);

В зависимости от модуля меняются параметры "$module->params ="
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Не будь паразитом, сделай что-нибудь самостоятельно!
*

tomclancys

  • Захожу иногда
  • 152
  • 3 / 0
J!1.5, что ли?
Нет. Joomla 3.6.
Это нужно было для следующего:
- Есть 3 шаблона. Каждый шаблон для конкретной цели.
- В каждом шаблоне по 2-3 одинаковых модуля которые выводят какую то информацию.
- Чтобы не дублировать в панели управления для каждого шаблона один и тот же модуль по несколько раз.
- Сейчас мы добавляем 1 модуль в панели управления и выводим его как нам надо в разных шаблонах.
- Меньше мусора и дублей в панели управления.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Я понимаю, что вас не переубедить, но все равно напишу для других посетителей.
1. Ваш способ может быть оправдан где угодно, кроме в шаблоне: механизм вывода модулей в нем - как раз большой плюс CMS, к которому прилагали немало усилий.
2. Модуль будет выводиться даже тогда, когда он не опубликован.
3. 2 строки в панели управления, IMHO, не мусор, в отличие от ваших повторяющихся врезок в шаблонном индексе. Вы сами рискуете путаться в них, не говоря о ваших возможных "преемниках", которые будут проклинать вас до седьмого колена.
« Последнее редактирование: 28.06.2017, 11:10:04 от robert »
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ошибка при входе в корзину шаблон jmart

Автор dimiur

Ответов: 5
Просмотров: 2700
Последний ответ 24.05.2023, 14:24:30
от Gleb72
Почему обновление шаблона ломает шаблон?

Автор gorbi_U

Ответов: 8
Просмотров: 1403
Последний ответ 03.05.2023, 22:54:19
от SmiP
Нужно ли переносить custom.css при переезде на новый шаблон?

Автор gorbi_U

Ответов: 3
Просмотров: 1065
Последний ответ 09.02.2023, 21:05:42
от marksetter
Разобраться с областью компонента в шаблоне

Автор gorbi_U

Ответов: 7
Просмотров: 1202
Последний ответ 04.02.2023, 10:45:14
от sivers
Через модуль html надо вставить три изображения в одну линию (горизонтально)

Автор dionisimuss

Ответов: 10
Просмотров: 800
Последний ответ 21.12.2022, 20:59:52
от dionisimuss