оригинальная версия версия для слабовидящих контрастная версия выключить изображения включить изображения тёмная версия светлая версия RSS FEED K2 NEWS
☰☰
Вторник, 06 Октябрь 2026 00:00

Joomla-статьи без H1 и canonical: чиним сами

Joomla умеет из коробки многое, но SEO-мелочи оставляет на совести владельца сайта. Мой сайт состоит из двух частей: новости на компоненте K2 и обычные статьи на стандартном com_content. У K2 с технической оптимизацией всё было в порядке, а статьи выглядели так, будто их никто не настраивал: на страницах не было тега H1, а адрес основной версии страницы нигде не указывался. Расскажу, что именно было не так и как я это исправил.

Joomla-статьи без H1 и canonical: чиним сами

Начну с H1. Заголовок первого уровня подсказывает и поисковому роботу, и читателю, о чём страница. Правило простое: на странице один H1, и он отражает тему материала. В стандартном шаблоне com_content название статьи выводится тегом H2, а H1 появляется, только если в пункте меню включён показ заголовка страницы, да и то лишь для статей, привязанных к меню. Поэтому заголовки на многих страницах начинались сразу со второго уровня. Штрафа за это никто не выставит, но структура страницы получается кривой, а главную тему роботу лучше называть прямо.

Править файлы самой Joomla нельзя: любое обновление затрёт изменения. Для этого существуют переопределения шаблона. В админке открываем «Расширения → Шаблоны → Шаблоны», выбираем шаблон сайта, вкладку «Создать переопределения», в разделе com_content нажимаем article. Joomla сама копирует файлы в папку templates/название_шаблона/html/com_content/article/, и с этого момента вывод статьи управляется ими. В файле default.php находим заголовок статьи и меняем тег:

<h1 itemprop="name">
    <?php echo $this->escape($this->item->title); ?>
</h1>

Блок с page_heading, где Joomla сама выводит H1 из настроек меню, заменяем на обычный div, иначе на странице окажется два H1. Проверить просто: открываем статью, нажимаем Ctrl+U и ищем

Со вторым вопросом, canonical, всё интереснее. Одну и ту же статью Joomla может отдавать по нескольким адресам: через разные пункты меню, с параметром Itemid, в версии для печати или с tmpl=component. Добавьте сюда варианты с www и без, http и https. Для поисковика это разные страницы с одним содержимым, и какую из них показывать в выдаче, он решает сам. Тег canonical в head прямо говорит, какой адрес считать основным. Добавляется он там же, в переопределении article, в верхнем PHP-блоке:

$canonical = JUri::getInstance()->toString(array('scheme', 'host')) .
    JRoute::_(ContentHelperRoute::getArticleRoute($this->item->slug, $this->item->catid, $this->item->language), false);
$this->document->addHeadLink($canonical, 'canonical');

Код собирает домен и правильный адрес статьи из алиаса и категории, а Joomla сама кладёт готовый тег в head. Остаётся убедиться, что ссылка получилась одна: в исходнике страницы ищем canonical. Если их две, вторую добавляет плагин System - SEF, и один из источников придётся отключить. Ту же логику я применил и к страницам категорий, чтобы там тоже был один H1 и свой canonical.

Результат виден сразу. На проверенной странице один H1 с названием материала, один canonical на правильный адрес, заголовки идут по порядку. Дальше остаётся отправить основные страницы на переобход в Яндекс Вебмастере и Google Search Console и заняться мелочами вроде alt у картинок. Хороший результат здесь дают не магия и не дорогие плагины, а несколько аккуратных правок в шаблоне.

Спонсоры: