Понадобилось вывести модуль с заголовком H2, в настройках модуля выставил соответствующий заголовок, на сайте попрежнему H3, файл "modules.php" из шаблона заменил файлом из шаблона "system" - не помогло. Посмотрел варианты вывода модулей в modules.php, с отображением заголовков в соответствии со значением в настройках оказался только 1 - html5 (функция "modChrome_html5").
Теперь о том, как создать собственные варианты отображения.
Копируем из каталога "html" системного шаблона (/templates/system/html) файл "modules.php" в соответствующий каталог своего шаблона и откроем его для редактирования.
Ниже - значения в настройках модуля (вкладка "дополнительные параметры") и их вывод:
В настройках | Вывод |
---|---|
Суффикс CSS-класса модуля |
|
HTML-тег модуля |
|
HTML-тег заголовка |
|
CSS-класс заголовка |
|
Добавим вконце новую функцию - modChrome_mymod:
function modChrome_mymod($module, &$params, &$attribs)
{
//CSS-класс заголовка
$headerClass = $params->get('header_class');
//HTML-тег заголовка, если нет - будет DIV
$headerTag = $params->get('header_tag', 'div');
//Суффикс CSS-класса модуля
$moduleClass = $params->get('moduleclass_sfx');
//HTML-тег модуля, если нет - будет DIV
$moduleTag = $params->get('module_tag', 'div');
if ($module->content)
{
//Открываем модуль
echo "<" . $moduleTag . " class=\"mod " . $moduleClass . "\">";
//Заголовок модуля
echo "<" . $headerTag . " class=\"moduletitle " . $headerClass . "\">" . $module->title . "</" . $headerTag . ">";
echo $module->content;
//Закрываем модуль
echo "</" . $moduleTag . ">";
}
}
Только в настройках нет тега заголовка "div", при необходимости можно либо создать еще одну функцию либо в данной заменить:
" . $headerTag . "
на:
div
Т.е. должно получиться так:
Теперь новый стиль (mymod) можно указывать для позиций модулей в файле index.php шаблона (как правило, могут быть варианты..)://Заголовок модуля
echo "<div class=\"moduletitle " . $headerClass . "\">" . $module->title . "</div>";
<jdoc:include type="modules" name="position-7" style="mymod" />