Как добавить canonical ссылки в компоненты Joomla

Как добавить canonical ссылки в компоненты JoomlaКак добавить canonical ссылки в компоненты Joomla

Для чего нужны canonical ссылки? Представьте, например, что у вас есть блог статей. В блоге используется пагинация – в поиске индексируются все страницы, различные варианты вывода (плиткой, списком, по 9 элементов, по 30 элементов). Хотя, по сути, информативно нас интересует только 1 страница. Каноническая ссылка указывает поисковым системам, какая из страниц основная, а какие – дубли.

Для чего нужны canonical ссылки?Каноническая ссылка указывает поисковым системам, какая из страниц основная, а какие страницы – дубли.

В Joomla также существует большое количество дубликатов страниц. Например, только для 1 статьи могут быть следующие варианты URI:

  • /news/115-deshevye-svadebnye-platya-optom
  • /news/115-deshevye-svadebnye-platya-optom/
  • /news/115-platya-optom
  • /component/content/article/115
  • /index.php?option=com_content&view=article&id=115

Такое разнообразие связанно с нюансами роутинга самой CMS и принципиально исправить проблему нельзя. Приходится либо делать редиректы, либо использовать канонические ссылки. Второй вариант немного удобнее, поскольку с ним удобно использовать UTM-метки, например.

0. Подготовка. Плагин SEF.

В Joomla 3-й версии плагин SEF генерирует свои canonical ссылки, при чём неправильные. В интернете это явление уже давно прозвали “SEO killer feature”. Ну а пока разработчики Joomla ковыряются в носу, мы её просто отключим. Заходим в файл /plugins/system/sef/sef.php, находим необходимый нам участок кода и комментируем его:

  1. if ($uri->toString() !== $link)
  2. {
  3.   //Строку ниже надо закомментировать
  4.   //$doc->addHeadLink(htmlspecialchars($link), 'canonical');
  5. }

Далее необходимо зайти на интересующие нас страницы и проверить наличие тега <link rel="canonical" href="...">. Неправильный тег должен исчезнуть.

1. Компонент контента

Материалы и блоги в Joomla изначально довольно "кривые". Давайте попробуем доработать их немного напильником.

1.1. Каноническая ссылка для материалов

Открываем шаблон статьи. Он обычно находится в файле
/templates/<ваш шаблон>/html/com_content/article/default.php. После строки
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers'); добавляем следующие строки:

  1. $doc=JFactory::getDocument();
  2. $doc->addHeadLink(
  3.    rtrim(JUri::base(),'/').
  4.    JRoute::_(ContentHelperRoute::getArticleRoute($this->item->id,$this->item->catid)),
  5.    'canonical','rel','');

1.2. Каноническая ссылка для блога

Открываем шаблон блога. Он обычно находится в файле
/templates/<ваш шаблон>/html/com_content/category/blog.php. После строки
JHtml::addIncludePath(JPATH_COMPONENT.'/helpers'); добавляем следующие строки:

  1. $doc=JFactory::getDocument();
  2. $doc->addHeadLink(
  3.    rtrim(JUri::base(),'/').
  4.    JRoute::_(ContentHelperRoute::getCategoryRoute($this->category->id)),
  5.    'canonical','rel','');

n. Остальные компоненты

Для остальных компонентов все действия аналогичны. Единственное что надо&nbsl;– получить правильный URL.

Комментарии

01.10.2016 09:49:56
Avatar of Лайт СолюшенЛайт Солюшен
Спасибо огромное за полезный материал. Занимаемся продвижением сайтов и часто сталкиваемся с данной проблемой в рамках внутренней сео оптимизации.
Captcha Обновить
Go Top