Всем здравствуйте. Сегодня продолжим создание шаблонов для Joomla, и научимся изменять вывод модулей.
Вы наверняка уже видели во многих шаблонах папку html, а в ней еще мелкая или большая кучка папок с файлами php. Именно благодаря им вывод материалов, категорий, контактов, модулей можно оформить по-своему.
Мы начнем с оформления модулей. Для начала рассмотрим штатные выводы модулей, которая предлагает сама CMS Joomla.
1. <jdoc:include type="modules" name="left">
Простой вывод в одном блоке. Заголовок здесь не выводится. Такой метод хорош для вывода позиций под баннеры или горизонтальное меню.
2. <jdoc:include type="modules" name="top" style="xhtml">
Выведет модуль в виде
<div class="moduletable">
<h3>Заголовок модуля</h3>
...Содержимое модуля
</div>
3. <jdoc:include type="modules" name="top" style="rounded">
Выводит следующим образом:
<div class="module">
<div>
<div>
<div>
<h3>Заголовок модуля</h3>
Содержимое модуля
</div>
</div>
</div>
</div>
С помощью этого метода можно выводить модули с закругленными углами, естественно оформив все это через css.
Теперь давайте колдовать. Создаем папку html в папке со своим шаблоном. В ней файл modules.php
Пишем в нем следующее:
//Объявлем функцию modChrome_jschool. "modChrome_" обязательная часть. "jschool" - про эту часть чуть позже.
function modChrome_jschool( $module, $params, $attribs ) {
if (isset( $attribs['head'] ))
{$header = $attribs['head'];} else {$headerLevel = 3;}
//Начинаем выводить модуль.
echo '<div class="module' .$params->get( 'moduleclass_sfx' ) .'" >';
if ($module->showtitle) { // Проверяем выводится ли заголовок
echo '<h'.$headlevel.'>'.$module->title .'</h'.$headlevel.'>';
echo '</div>'; // Закрываем div.module
} // Закрываем функцию
?>
Теперь открываем index.php нашего шаблона, и находим место под модули. Пишем:
style="jschool" - это стиль вывода модуля, который был объявлен в функции modChrome_jschool.
Параметр head="3" - Обернет заголовок модуля в
.
Смотрим еще раз modules.php
{$header = $attribs['head'];} // переменной $header присваиваем это значение
else {$headerLevel = 3;} // Если же нет, то ставим значение по-умолчанию, т.е. 3.
Получается, что объявлять вывод модуля можно и вот так:
В данном случае заголовок у модулей будет в h2
Можно передавать сколько угодно параметров. Вот еще пример.
Тогда в modules.php после строк
if (isset( $attribs['head'] ))
{$header = $attribs['head'];} else {$headerLevel = 3;}
добавляем еще
{$header = $attribs['width'];} else {$modwidth = 300;}
А строку
Приводим к виду
Таким образом дается полная свобода над оформлением модулей. Удачных экспериментов.
