CMS Joomla одна из лучших систем по настраиваемости и наличию уже готовых решений шаблонов, модулей и компонентов.
И, наверное каждый, кто пытался персонализировать подходящий для своего сайта шаблон, сталкивался с проблемой вывода модуля, в нужном для себя месте.
Прежде всего, чтобы определить название своего модуля, нужно прописать его в файле www/templates/ваш_шаблон/templateDetails.xml
Кроме описания и настроек шаблона, секция positions как раз и отвечает за перечень позиций:
... <positions> <position>left</position> <position>right</position> ... <position>my_module</position> </positions> ...
После добавления своей позиции в перечень, можно приступать к размещению блока в www/templates/ваш_шаблон/index.php
Начиная с Joomla 1.5 поддерживается 5 стандартных стилей вывода модулей. Также есть возможность создания своего варианта, но в этой статье мы его рассматривать не будем.
В шаблоне, где мы решили оформить свой блок, указываем подходящий по стилю код :
- <jdoc:include type="modules" name="my_module" style="xhtml" /> - выводит модуль, заключенный в div, которому задан класс модуля с указанным в настройках модуля суффиксом "_suf" и с заголовком h3:
<div class="moduletable_suf"> <h3>Название модуля</h3> Содержимое модуля </div>
- <jdoc:include type="modules" name="my_module" style="rounded" /> - выводит модуль, заключенный в четыре div(для создания закругленных уголков), которому задан класс модуля с указанным в настройках модуля суффиксом "_suf" и с заголовком h3:
<div class="module_suf"> <div> <div> <div> <h3>Название модуля</h3> Содержимое модуля </div> </div> </div> </div>
- <jdoc:include type="modules" name="my_module" style="table" /> - выводит модуль, заключенный в отдельную таблицу, которой задан класс модуля с указанным в настройках модуля суффиксом "_suf" и с заголовком в отдельной ячейкеth:
<table cellspacing="0" cellpadding="0" class="moduletable_suf"> <tbody> <tr> <th valign="top">Название модуля</th> </tr> <tr> <td>Содержимое модуля</td> </tr> </tbody> </table>
- <jdoc:include type="modules" name="my_module" style="horz" /> - то же, что и в предыдущем варианте, но заключенный ещё в одну таблицу:
<table cellspacing="1" cellpadding="0" border="0" width="100%"> <tbody> <tr> <td valign="top"> <table cellspacing="0" cellpadding="0" class="moduletable_suf"> <tbody> <tr> <th valign="top">Название модуля</th> </tr> <tr> <td>Содержимое модуля</td> </tr> </tbody> </table> </td> </tr> </tbody> </table>
- <jdoc:include type="modules" name="my_module" style="none" /> или <jdoc:include type="modules" name="my_module" /> - выводит только содержимое модуля, без каких либо блоков и заголовка.
Если модуль планируется выводить не на всех страницах сайта, будет целесообразней заключить его в php-код, который проверяет наличие модуля на странице:
<?php if($this->countModules('my_module')) : ?> <div class="my_module"> <jdoc:include type="modules" name="my_module" style="xhtml" /> </div> <?php endif; ?>