
Начну с 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 у картинок. Хороший результат здесь дают не магия и не дорогие плагины, а несколько аккуратных правок в шаблоне.









