Шаблонизация модулей
В этой статье я немного расскажу о шаблонизации модулей в Joomla 1.5. Допустим нужно выводить модули в определенной позиции в 4-х дивах (<div>) или задать свой вид вывода модуля. Для этого в Joomla можно задавать свои стили вывода модулей.
Стандартно модули в Joomla выводятся так:
<jdoc:include type="modules" name="user1" style="xhtml" />
- name - позиция модуля;
- style - как раз то что нам нужно, стиль вывода модуля;
Параметр style стандартно может принимать не много значений:
- none;
- table;
- horz;
- xhtml;
- rounded;
- outline;
Подробнее о них смотрите файл Joomla(root)\templates\system\html\modules.php.
Можно сделать свой стиль вывода модуля. Для этого создадим файл modules.php следующего содержания
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');
function modChrome_mystyle($module, &$params, &$attribs)
{ ?>
<div class="mystyle<?php echo $params->get('moduleclass_sfx'); ?>">
<?php if ($module->showtitle != 0) : ?>
<h3><?php echo $module->title; ?></h3>
<?php endif; ?>
<?php echo $module->content; ?>
</div>
<?php } ?>
И сохраним его в Joomla(root)\templates\ВАШ ШАБЛОН\html\modules.php. Обратите внимание, функция должна назваться - function modChrome_название стиля. Теперь, когда есть этот файл в шаблоне, он автоматически будет подключаться и выводить нужные стили. В index.php шаблона теперь можно выводить модули так:
<jdoc:include type="modules" name="user1" style="mystyle" />
Основные значения для $module:
- $module->id - ID модуля;
- $module->title - заголовок модуля;
- $module->content - контент модуля (содержимое);
- $module->position - позиция модуля;
- $module->showtitle - 0 или 1 показывать заголовок;
- $module->name - название модуля;
Так же при шаблонизации модуля довольно часто используют суффикс класса модуля для определения вывода. Переделаем немного файл, добавим вывод в зависимости от суффикса.
<?php
// no direct access
defined('_JEXEC') or die('Restricted access');
function modChrome_mystyle($module, &$params, &$attribs)
{
$suffix = $params->get('moduleclass_sfx', '');
switch ($suffix) {
case 'red': ?>
<div class="red">
<?php if ($module->showtitle != 0) : ?>
<h3><?php echo $module->title; ?></h3>
<?php endif; ?>
<?php echo $module->content; ?> </div>
<?php break;
case 'blue': ?>
<div class="blue">
<?php if ($module->showtitle != 0) : ?>
<h3><?php echo $module->title; ?></h3>
<?php endif; ?>
<?php echo $module->content; ?> </div>
<?php break;
default: ?>
<div class="default">
<?php if ($module->showtitle != 0) : ?>
<h3><?php echo $module->title; ?></h3>
<?php endif; ?>
<?php echo $module->content; ?> </div>
<?php }
}?>
Как видно из этого примера, можно задавать вид вывода модуля в зависимости от суффикса класса модуля. Если суффикс класса будет red или blue и стиль вывода модуля будет mystyle, то соответственно можно настроить отдельно вывод этих модулей.
Различные эффекты.
Несколько примеров для различного вывода заголовков модулей.
Первое слово (до первого пробела) отдельным стилем:
$title = preg_replace('/([^\s]+)(.*)/i', '<span class="color">${1}</span>${2}', JText::_($module->title));
Все что после пробела отдельным стилем:
16
Комментарии
22.02.2011 12:54
25.03.2011 15:27
11.04.2011 10:54
а если удалить modules.php все норм.
11.04.2011 17:09
Значит, что ошибки в php. Проверяйте Dreamviewer'oм ;)
14.08.2011 21:45
кодировка файла не та
RSS лента комментариев этой записи