Сегодня 28 | 09 | 2023

Заголовки модулей в Joomla! по непонятным причинам сделаны как h3, в то время как заголовки материалов вообще не являются таковыми. С точки зрения SEO это как минимум неправельно. Если вопрос о SEO не стоит, можно оставить всё как есть, раскрасив все эти "заголовки" с помощью CSS. Но что делать, если необходимо оптимизировать сайт так, как от нас этого требуют поисковики и структура документа в целом?

И так, как изменить заголовок у модуля?

Можно отключить отображения заголовка в модуле, потом вывести над ним ещё один модуль custom html типа и там вручную прописать нужный нам заголовок с требуемым текстом... Брр...

Давайте попробуем разобраться, откуда у нас там появляются h3 заголовки:

В шаблоне, мы указываем позицию вывода модулей с указанием стиля, выглядит это примерно так:

<jdoc:include type="modules" name="menu4" style="xhtml" /> - вывод модуля заключенного в одинарный DIV которому задан класс модуля с суфиксом указанным в настройках модуля и с заголовком h3

<jdoc:include type="modules" name="menu" style="rounded" /> - вывод модуля заключенного в четверной DIV (для формирования например закруглённых углов) которому задан класс модуля с суфиксом указанным в настройках модуля и с заголовком h3

<jdoc:include type="modules" name="menu" style="table" /> - вывод модуля заключенного в отдельной таблице, которой задан класс модуля с суфиксом указанным в настройках модуля и с заголовком h3 в отдельной <td>

<jdoc:include type="modules" name="menu" style="horz" /> - тоже что и table но заключенного ещё в одну таблицу

<jdoc:include type="modules" name="menu" style="none" /> или
<jdoc:include type="modules" name="menu" /> - "голый" вывод модуля, без блоков и заголовка h3

Всем этим заведует файл modules.php, расположенный по адресу templates/system/html/modules.php Загляним в него...

...
/*
* xhtml (divs and font headder tags)
*/
function modChrome_xhtml($module, &$params, &$attribs)
{
if (!empty ($module->content)) : ?>
<div class="moduletable<?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 endif;
}
...

Так выглядит вывод модуля для стиля xhtml. меняем строку <h3><?php echo $module->title; ?></h3> на <?php echo $module->title; ?> всё, теперь модули, выведенные в позицию со стилем xhtml будут выводится с заголовком в виде простого текста. При желании можно заключить его в span или div, вобщем делать с ним всё, что вам вздумается.

Можно усложнить задачу и написать свой собственный стиль вывода модулей, например style="mystyle"

Создаём свой собственный стиль вывода модуля

Создаём в папке вашего шаблона, папку html, в ней располагаем наш новый файл стиля modules.php (templates/ваш_шаблон/html/modules.php) в котором пишем следующее:

<?php
function modChrome_mystyle($module, &$params, &$attribs) {
$headerLevel = isset($attribs['headerLevel'])? $attribs['headerLevel'] : '';
if (!empty ($module->content)) : ?>
<div class="moduletable<?php echo $params->get('moduleclass_sfx'); ?>">
<?php if ($module->showtitle && $headerLevel) : ?>
<div class="mystyle_divtitle"><h<?php echo $headerLevel; ?>><?php echo $module->title; ?></h<?php echo $headerLevel; ?>></div>
<?php endif; ?>
<?php if ($module->showtitle && $headerLevel=='') : ?>
<div class="mystyle_divtitle"><?php echo $module->title; ?></div>
<?php endif; ?>
<?php echo $module->content; ?></div>
<?php endif;
}
?>

Теперь, указав позицию в шаблоне вида <jdoc:include type="modules" name="menu" style="mystyle" headerlevel="6"> мы получим модуль с заголовком 6 уровня. Если параметр headerLevel оставить пустым, или не указывать вообще, заголовок модуля будет в виде простого текста, заключенного в div с классом mystyle_divtitle.

Мы создали новый класс вывода модулей и добавили новый атрибут. Теперь зная как устроен вывод модулей, вы можете делать с выводом всё что вам нужно, в том числе и с заголовками.

Создавать свой стиль является более практичным методом, чем просто изменение файла modules.php, так как в случае обновления Joomla! файл modules.php может быть перезаписан и вам придётся заново править его под свои нужды.

Комментарии   

+1 #6 kg69design 26.05.2012 23:08
Спасибо за решение. Все работает, все корректно.
Цитировать
+1 #5 Виктор 15.04.2012 23:17
Подскажите, как поставить правильно h3 заголовки в ноиндекс!
Цитировать
+1 #4 Андрей 25.03.2012 00:18
Не парьтесь, просто поставьте h3 заголовки в ноиндекс и все дела. У меня к примеру если h3 менять на любой другой заголовок или на div и вручную прописывать стили, ломается шаблон, так что лучше не рисковать.
Цитировать
+1 #3 Андрей 25.03.2012 00:15
Не парьтесь, просто поставьте h3 заголовки в и все дела. У меня к примеру если h3 менять на любой другой заголовок или на div и вручную прописывать стили, ломается шаблон, так что лучше не рисковать.
Цитировать
+1 #2 mike 28.01.2012 17:14
А вы убрали h3 с двух концов? (глупый вопрос но мало ли...) Тогда ищите в настройках шаблона (если шаблон гавик то в /layouts/blocks ) или в подобных
Цитировать
+2 #1 Аня 30.06.2011 20:23
Здравствуйте! Помогите пожалуйста!

захожу \templates\system\html\modules.php
убираю h3, а в коде ничего не меняется. Заголовки не пропадают
Цитировать