Все выпуски  

Шаблоны Joomla. Часть 4.


Шаблоны 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 или Отдых круглый год!

Ехать на зарубежный курорт для того, чтобы все время лежать в шезлонге или барахтаться в море... Мало у кого есть такие планы. Незабываемые впечатления складываются от экскурсий или других необычных удовльствий. Предлагаем исчерпывающую информацию о прокате автомобилей на Кипре (прайс-лист на текущий туристический сезон). "Реальная" тема - проехаться на машине по острову, если Вы собираетесь там отдыхать. Читайте Кипр аренда авто на сайте нашего проекта "Отдых круглый год!"

Автор данной статьи: Леонид Мальков

 


В избранное