Шаблоны Joomla. Часть 4.
(Дизайн модулей. Применение функции mosLoadModules)
Уровень: Пользователь - Веб-мастер
Здравствуйте, уважаемые подписчики. Сегодня мы продолжаем тему прошлого выпуска №23. Создание шаблона с табличной резиновой версткой и начинаем разговор о возможностях вариаций дизайна модулей в шаблонах для Joomla. А такие вариации в Joomla предусмотрены на любой вкус.
Контейнеры для модулей в шаблонах для Joomla
Что мы подразумеваем под контейнером? Сейчас мы рассматриваем табличную верстку. Значит, в самом простом случае, модули будут располагаться в ячейках таблицы, то есть контейнером для модуля будет являться таблица. Однако в Joomla возможны дополнительные варианты.
Как Вы знаете из прошлого выпуска, модули в шаблон выводятся с использованием функции mosLoadModules('имя_позиции'); Однако это упрошенный синтаксис ее вызова, а может использоваться еще один параметр: mosLoadModules('имя_позиции', 'стиль_контейнера');
Прежде чем говорить об этом параметре подробнее, небольшое пояснение. Разработчик модуля может сам написать код контейнера для модуля, Вы можете этот сделать, создав новый модуль в админке и в окне ввода его содержимого написать любой html-код. НО! Обратите внимание: ДЛЯ СОДЕРЖИМОГО! Вывод заголовка модуля из админки не настроишь и не изменишь. Мы имеем ввиду html-верстку! Css-стили заголовков настраиваются элементарно, только надо знать названия этих стилей :)
Параметр 'стиль_контейнера' может принимать следующие ЧИСЛОВЫЕ значения:
- -1. Облегченный вариант. Joomla НЕ добавляет никакого html-кода (контейнера) для модуля и НЕ ВЫВОДИТ ЗАГОЛОВОК модуля :(
- -2. Joomla вставляет модуль в контейнер в виде слоя (тег <div>).
- -3. Joomla вставляет модуль в контейнер из НЕСКОЛЬКИХ СЛОЕВ. Что позволяет дизайнерам делать такие украшательства для модулей, как рамки с закругленными краями.
- По умолчанию. Если второй параметр не задавать или задать число, отличное от -1, -2, -3, то Joomla вставляет модуль в контейнер в виде таблицы.
Все эти чудеса :) происходят в файле /includes/frontend.html.php Ничто Вам не мешает определить в нем дополнительное значение для Вашего собственного контейнера, если понадобится, или подправить существующий вывод! В нашем учебном шаблоне mosLoadModules вызывается без второго параметра, поэтому каждый выводимый в шаблон модуль будет вставляться в дополнительную таблицу, генерируемую Джумлой, а выглядит это так (приводим кусок кода из файла frontend.html.php):
/*
* standard tabled output
*/
function modoutput_table( $module, $params, $Itemid, $moduleclass_sfx, $type=0 ) {
global $mosConfig_live_site, $mosConfig_sitename, $mosConfig_lang, $mosConfig_absolute_path;
global $mainframe, $database, $my;
?>
<!-- Начало таблицы и ОПРЕДЕЛЕНИЕ ее класса -->
<table cellpadding="0" cellspacing="0" class="moduletable<?php echo $moduleclass_sfx; ?>">
<?php
if ( $module->showtitle != 0 ) {
?>
<tr>
<!-- Вывод заголовка модуля -->
<th valign="top">
<?php echo htmlspecialchars( $module->title ); ?>
</th>
</tr>
<?php
}
?>
<tr>
<td>
<!-- Вывод содержимого модуля -->
<?php
if ( $type ) {
modules_html::CustomContent( $module, $params);
} else {
include( $mosConfig_absolute_path . '/modules/' . $module->module . '.php' );
if (isset( $content)) {
echo $content;
}
}
?>
</td>
</tr>
</table>
<?php
}?>
Ниже представлен html-код, генерируемый скриптом:
<table cellpadding="0" cellspacing="0" class="moduletable[суффикс]">
<tr>
<th valign="top">Заголовок модуля</th>
</tr>
<tr>
<td>
Содержимое модуля
</td>
</tr>
</table>
Что для нас важно:
- Таблица-контейнер имеет класс с фиксированным именем "moduletable" + cуффикс, если он задан для модуля (что позволит модулю определить уникальный стиль)
- Заголовок модуля находится в теге <th> (table header)
- Содержимое модуля находится в ячейке таблицы
Модули в таблице. СТИЛЬНЫЙ дизайн :)
Из вышеизложенного делаем вывод, что для дизайна таблиц, обрамляющих модуль, необходимо настраивать следующие стили:
table.moduletable {
...
}
table.moduletable th {
...
}
table.moduletable td {
...
}
Пример с конкретными стилями разберем в следующем выпуске, а сейчас предлагаем...
off topic или Отдых круглый год!
Ехать на зарубежный курорт для того, чтобы все время лежать в шезлонге или барахтаться в море... Мало у кого есть такие планы. Незабываемые впечатления складываются от экскурсий или других необычных удовльствий. Предлагаем исчерпывающую информацию о прокате автомобилей на Кипре (прайс-лист на текущий туристический сезон). "Реальная" тема - проехаться на машине по острову, если Вы собираетесь там отдыхать. Читайте Кипр аренда авто на сайте нашего проекта "Отдых круглый год!"
Автор данной статьи: Леонид Мальков