Да, это очень странно, но в CMS Joomla до сих пор не устранена проблема дублирующихся заголовков H1, H2 и метатега description при публикации блога, текстового контента. Особенно если в блоге несколько страниц, то будьте уверены - на все страницы будет один и тот же заголовок, метатег title и метатег description.
Почему это так важно для сайта?
Теги H1, H2, H3, H4, H5, H6 (их еще называют "заголовками") предназначены для того, чтобы акцентировать внимание на определённых участках контента и являются важной частью структуры страницы сайта.
С некоторых пор поисковые системы начали оценивать сайт и задавать позиции в рейтинге еще и по соответствию внутренней структуры правилам языка разметки HTML.
Вот несколько правил:
- Использование html тега заголовка h1 на странице допускается не более одиного раза и по умолчанию, заголовок первого уровня H1 отображается самым крупным (среди прочих тегов H) шрифтом жирного начертания.
- Заголовок H1 должен быть расположен выше всех остальных заголовков H на странице.
- На странице должно быть не больше одного H1.
- Чрезмерное количество Н-элементов на странице может быть неверно истолковано поисковой системой как попытка спама.
- Теги Н1-Н6 должны содержать коротокое описание страницы с харатерными ключевыми словами. Точное соответствие ключевого слова в заголовке повышает релевантность страницы по соответствующему запросу.
- Уникальность заголовка относительно других страниц сайта. Страницы сайта с повторяющимися заголовками могут не учитыватся поисковыми системами.
Вот шестое правило выполняется в CMS Joomla не всегда (кстати и в wordpress тоже, но эту CMS сегодня мы рассматривать не будем.
А невыполняется оно следуя непонятной логике разработчиков сайта. По этой самой логике тег H1 должен быть только у названия пункта меню. В этом можно убедиться, если открыть один из пунктов меню и на вкладке «Параметры страницы» поставить переключатель «Показывать заголовок страницы» в положение «Да».
Если не указывать значения «Заголовок страницы в браузере» либо «Заголовок страницы» тогда в качестве тега H1 на странице сайта будет выведен заголовок самого пункта меню.
По такой логике если необходимо у каждой статьи иметь свой аутентичный заголовок H1, надо для каждого материала создать отдельный пункт в меню. Но если количество материалов больше сотни, то размер меню будет огромный и формирование меню потребует приличных трудозатрат.
Эта проблема хорошо известна тем, кто занимается SEO сайтов с CMS Joomla. И мы покажем как ее решить:
Необходимо изменить код php
Мы покажем на примере бесплатного шаблона HELIX 3.0.2 разработчика Joomshaper. Почти все современные шаблоны для Joomla устроены одинаково, поэтому способ для HELIX подойдет и для других.
В шаблоне есть функционал, заменяющий отображение контента из базовой части CMS Joomla. Это сделано специально для того, чтобы можно было внести исправление в макет отображения контента в шаблоне и не беспокоиться о там, что это исправление макета пропадет при очередном обновлении CMS. Для того чтобы исправление макета не пропало при обновлении непосредственно шаблона HELIX необходимо сделать дубликат со своим названием файла php по адресу: template/ваш шаблон/html/com_content/article\
Мы же возьмем по этому адресу файл articles.php и посмотрим как в нем формуруются интересующие нас H1 и H2.
В шаблоне HELIX заголовой Н1 формируется в коде:
И из кода мы видим, что H1 берется из данных, указанных в меню.
А заголовок статьи H2 формируется в коде:
Теперь наша задача оставить только один заголовок H1 и мы предлагаем убрать DIV с классом page-header и всем содержимым из строки 57-61. А со строки 83 вставить вот такой код:
Тем самым мы внесли альтернативу - если статья (материал) соответствует конкретному пункту меню, то H1 будет формироваться на основе правил, определенных для этого пункта меню. А если статья (материал) не имеет конкретного пункта меню (например, статья из блога, списка категории и т.д.), то заголовок H1 будет заголовком статьи. И никаких H2!
А теперь еще "вишенка на торте" - дополнение макета автоматическим заполнением метатега description с уникальным содержимым:
В конце файла мы добавляем такой код:
Воспроизведем его в текстовом формате для удобства копирования:
<?php
$article_date=substr($this->item->created,0,10);
$document = JFactory::getDocument();
$desc = $document->getMetadata('description');
$title = $this->escape($this->item->title);
$head = $this->escape($this->params->get('page_heading'));
$titletext =$head.': Статья от '.$article_date.' о: '.$title.' - '.$desc;
$document->setMetadata('description', $titletext);
?>
Что делает этот код: берем содержимое метатега description (если оно есть), добавляем к нему дату и заголовок статьи. В итоге получаем уникальное содержимое метатега description, независимо от того какое оно было изначально и было ли оно вообще.
Следующий этап - устранение дублей заголовков и описаний в многостраничном блоге
Как мы писали выше, CMS Joomla не меняет метатеги title и description на страницах блога. То есть если у вас 2 и более страниц блога, то на них будет одинаковые метатеги title и description, определенные пунктом меню или описанием категории материалов. Поисковым системам это очень не нравится и они могут перестать индексировать все страницы блога с одинаковыми метатегами title и description, кроме одной - первой.
Для устранения этой проблемы аналогично берем файл по адресу template\ваш шаблон\html\com_content\category\blog.php и дополняем его кодом:
Важно: Код с функцией num2word нужно разместить после всех php-скриптов в файле.
Что мы получили:
- теперь метатег title на каждой странице блога выглядит так - "Страница номер страницы раздела название из меню или категории", то есть уникально для любой страницы блога.
- теперь метатег description на каждой странице блога выглядит так - "Страница номер страницы раздела соджержимое description из меню или категории ", то есть уникально для любой страницы блога.
Таким образом модифицируя два php-файла мы решим задачу по получению уникальных и неповторяющихся метатегов title и description, заголовков H1 и H2.
Напоминаем: перед модификацией кода своего сайта сделайте резервную копию!
H1-H6 заголовки имеют чрезвычайно важное значение. Не стоит ими пренебрегать, но и злоупотреблять тоже не стоит. Заголовки могут как поднять, так и опустить сайт в рейтинге поисковой выдачи.
Если вам необходима услуга по модификации вашей CMS для устранения проблемы дублей заголовков и описаний страниц, то обращайтесь в нашу компанию: