В предыдущей статье была рассмотрена SEO модификация ссылок на статьи в Списке материалов категории на сайте под управлением CMS Joomla. С превращением обычных ссылок в канонические в случае выдачи их в виде списка — задача достаточно тривиальная, так как ссылка одна и изменения нужно вносить только в один файл формирования этого списка. В этой статье рассмотрим, как быть том случае, когда ссылки на статьи выдаются в виде Блога категории. Задача немного усложняется.
Внимание!
Всё описанное в этой статье не будет играть никакого значения, так как в спецификации HTML нет значенияcanonical
атрибутаrel
для тега<a>
. Есть только для тега<link>
.
Поэтому, описанное ниже никак не повлияет на SEO Joomla.
Статью оставляю, так как в ней содержатся полезные сведения работы расширений Joomla. В остальном, данный подход в создании канонических ссылок не будет работать до тех пор, пока в спецификации HTML не появится данная опция для тега<a>
и/или поисковые машины не начнут её использовать.
Откуда берутся ссылки в виде Блога категории на страницах сайта Joomla
При создании пункта меню типа «Материалы» при выборе «Блог категории» получаем страницу, на которой будут материалы выбранной категории в виде блога. Вид этих материалов зависит от настроек, выбранных в настройках сайта или при публикации Категории, но в общем случае, каждый материал теперь имеет три ссылки на него:
- В заголовке статьи.
- В конце записи блога в виде кнопки «Читать далее» или её аналоге.
- В картинке и подписи к ней, если к статье прикреплена превьюха.
Выглядит это примерно так:
Замечательным свойством этих ссылок, которым мы и воспользуемся, является то, что вне зависимости от того, с какой страницы происходит формирование этих ссылок, они все одинаковые при любых раскладах и содержат в своём URL путь до материала и алиас материала, заданный при его публикации. Именно это свойство и служит поводом для задания этих трёх ссылок в виде канонических тегом rel="canonical"
для того, чтобы поисковые роботы точно знали, какой именно URL страницы брать в свою индексную базу, а не пытаться определить самостоятельно. Это должно помочь в СЕО сайта:
1. Как прописать rel="canonical"
для ссылок в заголовке статьи в Блоге категории в Joomla
Начну и продолжу в том порядке, который описан выше так, чтобы решить вопрос канонизации всех ссылок на материалы в Блоге категории. Первым пунктом идёт ссылка в заголовке статьи. Она формируется в строке 23 в файле blog_style_default_item_title.php
, находящемуся тут:
/layouts/joomla/content/blog_style_default_item_title.php
Для того, чтобы сделать ссылки в заголовке статьи в Блоге категории нужно сделать следующее:
Было:
<a href="/<?php echo JRoute::_(
ContentHelperRoute::getArticleRoute($displayData->slug, $displayData->catid, $displayData->language)
); ?>" itemprop="url">
<?php echo $this->escape($displayData->title); ?>
</a>
Стало:
<a rel="canonical" href="/<?php echo JRoute::_(
ContentHelperRoute::getArticleRoute($displayData->slug, $displayData->catid, $displayData->language)
); ?>" itemprop="url">
<?php echo $this->escape($displayData->title); ?>
</a>
2. Как прописать rel="canonical"
для ссылок в конце записи блога в виде кнопки «Читать далее» или её аналоге в Блоге категории в Joomla
Теперь разберёмся со ссылкой в конце записей. Эти ссылки формируются в файле readmore.php
, который находится по адресу:
/layouts/joomla/content/readmore.php
И эти ссылки встречаются в 4-х местах кода, который используется в зависимости от заданных настроек того, как эти ссылки должны выглядеть на сайте. Можно выставить везде и сразу атрибут rel="canonical"
в следующих строках:
стр.19:
<a rel="canonical" class="btn" href="/<?php echo $displayData['link']; ?>" itemprop="url" aria-label="<?php echo JText::_('COM_CONTENT_REGISTER_TO_READ_MORE'); ?>
стр.25:
<a rel="canonical" class="btn" href="/<?php echo $displayData['link']; ?>" itemprop="url" aria-label="<?php echo htmlspecialchars($item->title, ENT_QUOTES, 'UTF-8'); ?>">
стр.33:
<a rel="canonical" class="btn" href="/<?php echo $displayData['link']; ?>" itemprop="url" aria-label="<?php echo JText::_('COM_CONTENT_READ_MORE'); ?> <?php echo htmlspecialchars($item->title, ENT_QUOTES, 'UTF-8'); ?>">
стр.38:
<a rel="canonical" class="btn" href="/<?php echo $displayData['link']; ?>" itemprop="url" aria-label="<?php echo JText::_('COM_CONTENT_READ_MORE'); ?> <?php echo htmlspecialchars($item->title, ENT_QUOTES, 'UTF-8'); ?>">
Я рекомендую пользоваться Глобальными настройками в выставлении свойств в Joomla. Это позволит не переопределять всё, но для подстраховки, можно внести изменения во всех четырёх строчках, показанных выше, прописав в них rel="canonical"
. Тогда при любых настройках ссылок типа «Читать дальше» будут применены указатели на то, что ссылки являются каноническими.
3. Как прописать rel="canonical"
для ссылок в картинке и подписи к ней, если к статье прикреплена превьюха, в Блоге категории в Joomla
Ну и осталось разобраться со ссылками на превьюхах и подписей к ним. Формирование этих ссылок происходит в 18-й строке файла intro_image.php
, расположенного тут:
/layouts/joomla/content/intro_image.php
Нужно вставить rel="canonical"
:
<a rel="canonical" href="/<?php echo JRoute::_(ContentHelperRoute::getArticleRoute($displayData->slug, $displayData->catid, $displayData->language)); ?>"><img
Выводы
Таким образом можно настроить правильные канонические ссылки на все материалы на статьи в Блоге категории. Всё просто...
...при условии, что шаблон сайта не переопределяет этот код. А такое в Joomla возможно. О том, где находятся файлы, отвечающие за формирование ссылок на все материалы на статьи в Блоге категории на примере шаблона Protostar с переопределёнными файлами, рассмотрим в → этой статье.
И важно помнить то, что при апдейте Joomla, эти изменения будут слетать и их нужно будет перезаписывать заново. Переопределять в шаблоне тоже не очень хотелось бы, так как в коде ядра Joomla может что-то поменяться так, что переопределения уже не будут правильно собирать эти части кода со ссылками.
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)