LiveInternetMail.ru
Форум русской поддержки Joomla!® CMS
13.02.2012, 04:00:20 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 1.7 FAQ Joomla 1.5 FAQ Joomla 1.0 FAQ Правила форума Новости Joomla Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор Тема: Создание новых стилей вывода модуля в файле modules.php  (Прочитано 3047 раз)
0 Пользователей и 1 Гость смотрят эту тему.
beliyadm
Профи
********

Репутация: +1432/-61
Offline Offline

Пол: Мужской
Сообщений: 9254


Севастополь==Россия


« : 07.03.2010, 21:12:09 »

В шаблонах для движка 1.5 вставка позиции модуля происходит следующим образом
Код
<jdoc:include type="modules" name="left" style="xhtml" />
Если с полем name все понятно (имя позиции из списка созданных в XML файле шаблона), то вот с полем style частенько возникают вопросы - что это, зачем и что можно с ним делать.
Разберем сначала вывод хтмл по умолчанию при стиле XHTML - в исходном коде получается следующее
Код
<div class="moduletable">
<h3>заголовок модуля</h3>
тело модуля
</div>
А что же нам делать, если хотим чуть усложнить структуру, дабы вписаться в разработанный дизайн либо иное? Все очень просто.
Мы идем в папку шаблона, в ней видим (и если не видим то создаем папку html), в ней находим (а если не находим то создаем файл modules.php). В нем к примеру пишем такую функцию
Код
function modChrome_mycustomdiv($module, &$params, &$attribs)
{
$headerLevel = isset($attribs['headerLevel'])? (int) $attribs['headerLevel'] : 3;
if (!empty ($module->content)) : ?>
<div class="mycustomdiv<?php echo $params->get('moduleclass_sfx'); ?>">
<?php if ($module->showtitle) : ?>
<div class="mycustomdivtitle"><h3><?php echo $module->title; ?></h3></div>
<?php endif; ?>
<?php echo $module->content; ?>
</div>
<?php endif;
}
И в шаблоне index.php для style теперь указываем значение mycustomdiv. То есть имя функции обязательно должно начинаться с modChrome_ а то что после подчеркивания нужно использовать в качестве значения style при выводе в шаблоне
Код
<jdoc:include type="modules" name="left" style="mycustomdiv" />
В итоге у нас хтмл вывод будет таким
Код
<div class="mycustomdiv">
<h3>заголовок модуля</h3>
тело модуля
</div>
По порядку, что мы здесь видим:
$params->get('moduleclass_sfx') - суффикс модуля, заданный в его настройках
$module->showtitle - заголовок модуля и соответственно проверку условия, если в настройках отмечен к показу - то выводим в тегах h3
$module->content - тело модуля, зависит от хелпера модуля либо других вариаций вывода

Получается что в эту функцию мы можем добавить любую структуру контента модуля, хоть табличную, хоть дивную, зависит от потребностей для вывода данного модуля

« Последнее редактирование: 07.03.2010, 21:41:29 от beliyadm » Записан
 
SmokerMan
Профи
********

Репутация: +489/-19
Offline Offline

Пол: Мужской
Сообщений: 5078



« Ответ #1 : 09.03.2010, 16:35:39 »

можно немного дополнить (расширенное рассмотрение возможностей шаблонизации модуля)
И куда-нибудь присобачить. Будет полезно.
« Последнее редактирование: 09.03.2010, 16:37:37 от beliyadm » Записан
sachek
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 51


Jamal*


« Ответ #2 : 17.08.2011, 11:06:48 »

В шаблонах для движка 1.5 вставка позиции модуля происходит следующим образом
Код
<jdoc:include type="modules" name="left" style="xhtml" />
Если с полем name все понятно (имя позиции из списка созданных в XML файле шаблона), то вот с полем style частенько возникают вопросы - что это, зачем и что можно с ним делать.
Разберем сначала вывод хтмл по умолчанию при стиле XHTML - в исходном коде получается следующее
Код
<div class="moduletable">
<h3>заголовок модуля</h3>
тело модуля
</div>
А что же нам делать, если хотим чуть усложнить структуру, дабы вписаться в разработанный дизайн либо иное? Все очень просто.
Мы идем в папку шаблона, в ней видим (и если не видим то создаем папку html), в ней находим (а если не находим то создаем файл modules.php). В нем к примеру пишем такую функцию
Код
function modChrome_mycustomdiv($module, &$params, &$attribs)
{
$headerLevel = isset($attribs['headerLevel'])? (int) $attribs['headerLevel'] : 3;
if (!empty ($module->content)) : ?>
<div class="mycustomdiv<?php echo $params->get('moduleclass_sfx'); ?>">
<?php if ($module->showtitle) : ?>
<div class="mycustomdivtitle"><h3><?php echo $module->title; ?></h3></div>
<?php endif; ?>
<?php echo $module->content; ?>
</div>
<?php endif;
}
И в шаблоне index.php для style теперь указываем значение mycustomdiv. То есть имя функции обязательно должно начинаться с modChrome_ а то что после подчеркивания нужно использовать в качестве значения style при выводе в шаблоне
Код
<jdoc:include type="modules" name="left" style="mycustomdiv" />
В итоге у нас хтмл вывод будет таким
Код
<div class="mycustomdiv">
<h3>заголовок модуля</h3>
тело модуля
</div>
По порядку, что мы здесь видим:
$params->get('moduleclass_sfx') - суффикс модуля, заданный в его настройках
$module->showtitle - заголовок модуля и соответственно проверку условия, если в настройках отмечен к показу - то выводим в тегах h3
$module->content - тело модуля, зависит от хелпера модуля либо других вариаций вывода

Получается что в эту функцию мы можем добавить любую структуру контента модуля, хоть табличную, хоть дивную, зависит от потребностей для вывода данного модуля



Все отлично получилось...но хотя бы отображается заголовки модулей.Вот еще бы эти заголовки подогнать под общий дизайн сайта,а то на превью моего шаблона совсем по другому сайт выглядет.Я так понимаю нужно самому уже создавать свой стиль...?
Записан
lottis
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Пол: Мужской
Сообщений: 150



« Ответ #3 : 28.08.2011, 00:35:06 »

спасибо, очень тема помогла, как раз столкнулся с тем, как изменить стандартные теги вывода заголовка меню - поменял - как теперь красиво стало - любуюсь ;-) +1 вам)
вот так вышло: (заголовок модуля в h3 с стилем caption, моей иконкой)



Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Рейтинг@Mail.ru Rambler Top100 Powered by SMF 1.1.16 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet