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; ?>