Добавить rel canonical в joomla 2.5

Владельцам сайтов на дижке Joomla! 2.5.4 Stable — как добавить на отдельные страницы документа строку rel canonical (канонические адреса)

В интернете для сайтов созданных в Джумла существует не много плагинов добавляющих канонические url на страницы. Некоторые из плагинов являются платными, другие некорректно работают.

В моем случае проблема возникла на сайте где установлены кириллические ссылки. Yandex Webmaster периодически индексирует документы сайта по не правильному url.

Пример:

канонический адрес — sait.ru/страны/франция/все-о-франции/20-население

Доступен по адресу — sait.ru/страны/франция/xxx/20-xxx

Вот простое решение которое позволит добавить тег канонического адреса только на ту страницу которую необходимо изменить.

  1. Находим файл head.php по адресу: вашсайт.ru/libraries/joomla/document/html/renderer/
  2. Скачиваем файл и находим кусок кода

// Generate META tags (needs to happen as early as possible in the head)
foreach ($document->_metaTags as $type => $tag)
{
foreach ($tag as $name => $content)
{
if ($type == ‘http-equiv’)
{
$content .= ‘; charset=’ . $document->getCharset();
$buffer .= $tab . ‘<meta http-equiv=»‘ . $name . ‘» content=»‘ . htmlspecialchars($content) . ‘» />’ . $lnEnd;
}
elseif ($type == ‘standard’ && !empty($content))
{
$buffer .= $tab . ‘<meta name=»‘ . $name . ‘» content=»‘ . htmlspecialchars($content) . ‘» />’ . $lnEnd;
}
}
}

 

Заменяем на этот:

// Generate META tags (needs to happen as early as possible in the head)
foreach ($document->_metaTags as $type => $tag)
{
foreach ($tag as $name => $content)
{
if ($type == ‘http-equiv’)
{
$buffer .= $tab . ‘<meta http-equiv=»‘ . $name . ‘» content=»‘ . htmlspecialchars($content) . ‘» />’ . $lnEnd;
}
elseif ($type == ‘standard’ && !empty($content))
{
//canonical
if ($content) {
if ($name==’xreference’) {
$buffer .= $tab . ‘<link rel=»canonical» href=»‘ . ‘http://вашсайт.ru’ . htmlspecialchars($content) . ‘» />’ . $lnEnd;

continue;
}
$buffer .= $tab . ‘<meta name=»‘ . $name . ‘» content=»‘ . htmlspecialchars($content) . ‘» />’ . $lnEnd;
}
}
}
}

Не забудьте поменять в коде адрес сайта на Ваш.

Теперь в админ панели вашего сайта открываем Менеджер материалов: Изменить нужный Вам материал. Переходим в метаданные.

rel_canonical

В графе «Внешняя ссылка вписываем правильный канонический адрес без указания основного домена (сайт.ru)

 

Перед сохранением исправленного файла head.php сохраните оригинальный файл, так как некоторые php строки кода в зависимости от версий движка могут не работать.

Лучшее решение дублей материалов

Канонические мета теги лучше всего использовать с JL NO DOUBLES — плагин борьбы с дублями

Написать комментарий