05 сентября 2009
Хитрости в шаблонах Joomla 1.5. Часть 2: Про оформление модулей
Привет! Сегодня поговорим о внутреннем оформлении модулей, имея ввиду HTML-код, который генерируют позиции модулей (пространство имён jdoc). По умолчанию Joomla 1.5 имеет 6 способов генерации кода. Способ генерации указывается в атрибуте «style», например:
Рассмотрим все 6 способов более подробно:
1) style=«rounded» — выводит модуль в четырёх вложенных div'ах, для создания закруглённых углов (на самом деле сейчас эта технология устарела, есть менее ресурсоёмкие способы):
2) style=«table» — выводить модуль в таблице:
3) style=«horz» — выводить модуль горизонтально в ячейке окружающей таблицы:
4) style=«xhtml» — выводить модуль в одном div-элементе:
5) style=«none» — выводить модуль без форматирования:
6) style=«outline» — выводить модуль с названием позиции модуля (словно также, когда к адресу сайта добавляется параметр «tp=1» для просмотра имеющихся позиций модулей в шаблоне:
Хоть и имеется 6 способов, но реально из них используются только два: «xhtml» и «none». Бывают ситуации когда этого не достаточно для реализации какой-то изюменки. Что же делать? Конечно читать документацию и благодарить разработчиков Joomla, которые позаботились даже об этом и разработали возможность создавать свои типы модулей (пользовательские модули). Чтобы определить пользовательский модуль вы должны в каталоге с вашим шаблон создать каталог «html» и положить туда файл «modules.php». В этом файле вы должны определить функцию, называемую «modChrome_STYLE», где «STYLE» — это имя вашего пользовательского модуля. Эта функция будет принимать три аргумента: $module, &$params и &$attribs:
В рамках этой функции может быть использовано любое модульное свойство (в т.ч. и параметры, которые содержатся в таблице «jos_modules» вашей БД). Основными же. являются:
— $module->content — переменная выводит содержимое модуля;
— $module->showtitle — переменная возвращает значение 1, если в настройках модуля разрешено показывать заголовок модуля, иначе — 0;
— $module->title — переменная выводит заголовок модуля.
Рассмотрим небольшой пример, в котором показан способ проверки отображения заголовка модуля, а также вывод самого заголовка в случае положительного результата:
Параметры модуля можно использовать через объект $params. Например вывод суффикса класса модуля (по умолчанию это значение хранится в параметре «moduleclass_sfx») осуществляется таким способом:
Попрактикуемся! Создадим пользовательский модуль, назовём его «custom» (это значит, что при использования его в шаблоне нужно будет написать style=«custom» в <jdoc:include />). Ну а толку да от такого модуля? Нужно сделать что-то интересное, чтобы почувствовать действительную необходимость пользовательских модулей! Сделаем первое слово в заголовке модуля красным цветом, а все остальные слова — цветом по умолчанию, описанному в стилях:
Вот так просто, всё зависит только от вашей фантазии и уровня знаний PHP! Для тех кто внимательно читал всё выше описанное, сейчас наступило самое время сделать себе сладкий чай, тем самым подкрепить мозг и дать устоятся полученным знаниям.
Как я уже писал выше, пользовательская функция принимает три аргумента. Для чего нужны два я кое-как объяснил, остался последний — &$attribs, о нём и поговорим. Как уже стало понятно разработчики не остановились на достигнутой гибкости и решили дать возможность использовать дополнительные параметры, которые хранятся в массиве $attribs. Рассмотрим пример:
Затем вы должны установить значения в <jdoc:include />, если вы этого не сделает, то будут использоваться значения по умолчанию: цвет синий, размер заголовка третий. Значения задаются таким образом:
1) <jdoc:include type=«modules» name=«user1» style=«custom» background=«green» /> — задаём значение цвета: background=«green»;
2) <jdoc:include type=«modules» name=«user1» style=«custom» headerLevel=«1» background=«yellow» /> — задаём значение размера заголовка и цвета: headerLevel=«1» и background=«yellow».
На этом всё! Продолжение следует…
Хитрости в шаблонах Joomla 1.5. Часть 1: Про позиции модулей
Хитрости в шаблонах Joomla 1.5. Часть 3: Всякого рода полезности
<jdoc:include type="modules" name="top" style="none" />
Рассмотрим все 6 способов более подробно:
1) style=«rounded» — выводит модуль в четырёх вложенных div'ах, для создания закруглённых углов (на самом деле сейчас эта технология устарела, есть менее ресурсоёмкие способы):
<div class="module_menu">
<div>
<div>
<div>
<h3>Main Menu</h3>
<ul class="menu">
<li><!-- various menu items --></li>
</ul>
</div>
</div>
</div>
</div>
2) style=«table» — выводить модуль в таблице:
<table cellpadding="0" cellspacing="0" class="moduletable_menu">
<tr>
<th valign="top">Main Menu</th>
</tr>
<tr>
<td>
<ul class="menu">
<li><!-- various menu items --></li>
</ul>
</td>
</tr>
</table>
3) style=«horz» — выводить модуль горизонтально в ячейке окружающей таблицы:
<table cellspacing="1" cellpadding="0" border="0" width="100%">
<tr>
<td valign="top">
<table cellpadding="0" cellspacing="0" class="moduletable_menu">
<tr>
<th valign="top">Main Menu</th>
</tr>
<tr>
<td>
<ul class="menu">
<li><!-- various menu items --></li>
</ul>
</td>
</tr>
</table>
</td>
</tr>
</table>
4) style=«xhtml» — выводить модуль в одном div-элементе:
<div class="moduletable_menu">
<h3>Main Menu</h3>
<ul class="menu">
<li><!-- various menu items --></li>
</ul>
</div>
5) style=«none» — выводить модуль без форматирования:
<ul class="menu">
<li><!-- various menu items --></li>
</ul>
6) style=«outline» — выводить модуль с названием позиции модуля (словно также, когда к адресу сайта добавляется параметр «tp=1» для просмотра имеющихся позиций модулей в шаблоне:
<div class="mod-preview">
<div class="mod-preview-info">left[outline]</div>
<div class="mod-preview-wrapper">
<ul class="menu">
<li><!-- various menu items --></li>
</ul>
</div>
</div>
Хоть и имеется 6 способов, но реально из них используются только два: «xhtml» и «none». Бывают ситуации когда этого не достаточно для реализации какой-то изюменки. Что же делать? Конечно читать документацию и благодарить разработчиков Joomla, которые позаботились даже об этом и разработали возможность создавать свои типы модулей (пользовательские модули). Чтобы определить пользовательский модуль вы должны в каталоге с вашим шаблон создать каталог «html» и положить туда файл «modules.php». В этом файле вы должны определить функцию, называемую «modChrome_STYLE», где «STYLE» — это имя вашего пользовательского модуля. Эта функция будет принимать три аргумента: $module, &$params и &$attribs:
<?php
defined('_JEXEC') or die('Restricted access');
function modChrome_STYLE( $module, &$params, &$attribs )
{
/* chromed Module output goes here */
}
?>
В рамках этой функции может быть использовано любое модульное свойство (в т.ч. и параметры, которые содержатся в таблице «jos_modules» вашей БД). Основными же. являются:
— $module->content — переменная выводит содержимое модуля;
— $module->showtitle — переменная возвращает значение 1, если в настройках модуля разрешено показывать заголовок модуля, иначе — 0;
— $module->title — переменная выводит заголовок модуля.
Рассмотрим небольшой пример, в котором показан способ проверки отображения заголовка модуля, а также вывод самого заголовка в случае положительного результата:
<?php
if ($module->showtitle)
{
echo '<h2>' .$module->title .'</h2>';
}
?>
Параметры модуля можно использовать через объект $params. Например вывод суффикса класса модуля (по умолчанию это значение хранится в параметре «moduleclass_sfx») осуществляется таким способом:
<div class="moduletable<?php echo $params->get( 'moduleclass_sfx' ); ?>">
<!-- div contents -->
</div>
Попрактикуемся! Создадим пользовательский модуль, назовём его «custom» (это значит, что при использования его в шаблоне нужно будет написать style=«custom» в <jdoc:include />). Ну а толку да от такого модуля? Нужно сделать что-то интересное, чтобы почувствовать действительную необходимость пользовательских модулей! Сделаем первое слово в заголовке модуля красным цветом, а все остальные слова — цветом по умолчанию, описанному в стилях:
<?php
defined('_JEXEC') or die('Restricted access');
function modChrome_custom($module, &$params, &$attribs)
{ ?>
<div class="moduletable<?php echo $params->get('moduleclass_sfx'); ?>">
<?php if ($module->showtitle) : ?>
<h3>
<?php
$title = $module->title;
$title = split(' ', $title);
$title[0] = '<span style="color:red">'.$title[0].'</span>';
$title = implode(' ', $title);
echo $title;
?>
</h3>
<?php endif; ?>
<div>
<?php echo $module->content; ?>
</div>
</div>
<?php }
?>
Вот так просто, всё зависит только от вашей фантазии и уровня знаний PHP! Для тех кто внимательно читал всё выше описанное, сейчас наступило самое время сделать себе сладкий чай, тем самым подкрепить мозг и дать устоятся полученным знаниям.
Как я уже писал выше, пользовательская функция принимает три аргумента. Для чего нужны два я кое-как объяснил, остался последний — &$attribs, о нём и поговорим. Как уже стало понятно разработчики не остановились на достигнутой гибкости и решили дать возможность использовать дополнительные параметры, которые хранятся в массиве $attribs. Рассмотрим пример:
<?php
defined('_JEXEC') or die('Restricted access');
function modChrome_custom( $module, &$params, &$attribs ) {
if (isset( $attribs['headerLevel'] ))
{
$headerLevel = $attribs['headerLevel'];
} else {
$headerLevel = 3;
}
if (isset( $attribs['background'] ))
{
$background = $attribs['background'];
} else {
$background = 'blue';
}
?>
<div class="moduletable<?php echo $params->get( 'moduleclass_sfx' ); ?>">
<?php
if ($module->showtitle)
{
echo '<h' .$headerLevel .'>' .$module->title .'</h' .$headerLevel .'>';
}
?>
<div class="<?php echo $background; ?>">
<?php echo $module->content; ?>
</div>
</div>
<?php
}
?>
Затем вы должны установить значения в <jdoc:include />, если вы этого не сделает, то будут использоваться значения по умолчанию: цвет синий, размер заголовка третий. Значения задаются таким образом:
1) <jdoc:include type=«modules» name=«user1» style=«custom» background=«green» /> — задаём значение цвета: background=«green»;
2) <jdoc:include type=«modules» name=«user1» style=«custom» headerLevel=«1» background=«yellow» /> — задаём значение размера заголовка и цвета: headerLevel=«1» и background=«yellow».
На этом всё! Продолжение следует…
Хитрости в шаблонах Joomla 1.5. Часть 1: Про позиции модулей
Хитрости в шаблонах Joomla 1.5. Часть 3: Всякого рода полезности
- morozovol
- 04 октября 2011, 23:13
- 0
Здрасте!
Это всё здорово, но подскажите как решить такой вопрос
Изменить оформление ЧАСТИ заголовка модуля
НАПРИмер так
т.е. часть слова Прописные буквы, часть — строчные и это в одном слове
я в админке в заголовке модуля ставлю span
пытаюсь сохранить, но всё форматирование режется
как сделать так чтобы не резалось?
когда в sql таблице меняю заголовок как надо он изменяется
стоит войти в модуль и пересохраниться — всё пропадает
что делать?
Это всё здорово, но подскажите как решить такой вопрос
Изменить оформление ЧАСТИ заголовка модуля
НАПРИмер так
т.е. часть слова Прописные буквы, часть — строчные и это в одном слове
я в админке в заголовке модуля ставлю span
пытаюсь сохранить, но всё форматирование режется
как сделать так чтобы не резалось?
когда в sql таблице меняю заголовок как надо он изменяется
стоит войти в модуль и пересохраниться — всё пропадает
что делать?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.
Комментарии:1