Добавить rel canonical в joomla 2.5
Владельцам сайтов на дижке Joomla! 2.5.4 Stable — как добавить на отдельные страницы документа строку rel canonical (канонические адреса)
В интернете для сайтов созданных в Джумла существует не много плагинов добавляющих канонические url на страницы. Некоторые из плагинов являются платными, другие некорректно работают.
В моем случае проблема возникла на сайте где установлены кириллические ссылки. Yandex Webmaster периодически индексирует документы сайта по не правильному url.
Пример:
канонический адрес — sait.ru/страны/франция/все-о-франции/20-население
Доступен по адресу — sait.ru/страны/франция/xxx/20-xxx
Вот простое решение которое позволит добавить тег канонического адреса только на ту страницу которую необходимо изменить.
- Находим файл head.php по адресу: вашсайт.ru/libraries/joomla/document/html/renderer/
- Скачиваем файл и находим кусок кода
// 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;
}
}
}
}Не забудьте поменять в коде адрес сайта на Ваш.
Теперь в админ панели вашего сайта открываем Менеджер материалов: Изменить нужный Вам материал. Переходим в метаданные.
В графе «Внешняя ссылка вписываем правильный канонический адрес без указания основного домена (сайт.ru)
Перед сохранением исправленного файла head.php сохраните оригинальный файл, так как некоторые php строки кода в зависимости от версий движка могут не работать.
Лучшее решение дублей материалов
Канонические мета теги лучше всего использовать с JL NO DOUBLES — плагин борьбы с дублями
А как сделать такое же для материалов K2?