Joomla 3 Показать разные модули в одной позиции в зависимости от переключателя
Есть моя проблема:
У меня есть раздел переключателей. В этом разделе должен отображаться динамический контент в зависимости от нажатого триггера. Так, например. при нажатии "поддержка" должна быть предоставлена некоторая контактная информация / средство загрузки, при нажатии "поиск" - окно поиска и т. д.
Мой вопрос заключается в том, возможно ли решить эту проблему только с одной позицией модуля или требуется одна позиция для каждого триггера?
Надеюсь описать это понятно =)
Любая помощь приветствуется.
Спасибо
Alex
UPD: попробую объяснить с помощью кода:
Положение модуля:
if ($this->countModules('pos-1')) :
$module = JModuleHelper::getModules( 'pos-1' );
foreach($modules as $m) : ?>
<section class="mod_%echo $m->title%">
<jdoc:include type="modules" name="pos-1" style="xhtml" />
</section>
endforeach;
endif;
И Триггер:
if ($this->countModules('pos-1')) :
$module = JModuleHelper::getModules( 'pos-1' );
foreach($module as $m) :
<a class="btn-collapse collapsed" role="button" data-toggle="collapse" data-parent="#accordion"
href="#echo $m->title;" aria-expanded="true" aria-controls=" echo $m->title;">
<i class="fa fa-building-o"></i> <? echo $m->title; ?>
</a>
endforeach;
endif;
Поэтому я добавил два модуля CustomHTML к этой позиции.
Результат:
<section ... class="mod_title1">
content mod_one
content mod_two
</section>
<section ... class="mod_title2">
content mod_one
content mod_two
</section>
<a ... href="#mod_title1" ...> mod_title1 </a>
<a ... href="#mod_title2" ...> mod_title2 </a>
И должно быть:
<section ... class="mod_title1">
content mod_one
</section>
<section ... class="mod_title2">
content mod_two
</section>
<a ... href="#mod_title1" ...> mod_title1 </a>
<a ... href="#mod_title2" ...> mod_title2 </a>
Так что я думаю, что это невозможно, поскольку только одна позиция должна решаться многими.
Пожалуйста, поправьте меня, если я ошибаюсь.
UPD2: я был не прав. Это возможно, но не только с помощью шаблона - также модуль chrome tempalte должен быть расширен с помощью собственной функции, чтобы сделать его правильным.
2 ответа
Это может быть сделано. Вы должны добавить отдельный класс для каждого модуля (назначенный той же позиции модуля) под:
Module Settings -> Advanced -> Module Class Suffix
Так что, если вы добавили suff1
а также suff2
классы, которые вы можете переключать их, используя:
jQuery(document).ready(function() {
jQuery("div.suff1, div.suff2").on("click", function() {
jQuery(this).parent().children().toggle();
});
});
div {
width: 180px;
height: 100px;
color: white;
}
div.suff1 {
background: orange;
display: none;
}
div.suff2 {
background: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>
<div class="suff1">Module 1</div>
<div class="suff2">Module 2</div>
</div>
Не уверен, что понял ваш вопрос, но если ваши триггеры являются пунктами меню, вы можете указать, чтобы ваши модули отображались только при выборе этих пунктов меню.
Зайдите в Расширения -> Диспетчер модулей, выберите нужный модуль, а затем на вкладке Назначение модуля -> Назначение модуля выберите "только на выбранных страницах" и выберите нужные пункты меню.
Вы можете позволить модулям в том же положении. Ваши модули будут отображаться в этой позиции только тогда, когда назначенный пункт меню активен.
НТН