Как добавить тег rel=»canonical» в материалы K2 на joomla 3?
Друзья, всем привет!
Подскажите как компонент к2 в джумле настроить выводить canonical?
Нашел некоторую информацию здесь, но для 3 версии joomla не подходит. Сайты ссылку или какую-нибудь наводку.
Спасибо!
- Вопрос задан более трёх лет назад
- 575 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 1
bbaggins @bbaggins Автор вопроса
Разобрался, всем спасибо!
// ———— Start Canonical-Mod
$mainmenu = JFactory::getApplication()->getMenu();
if($mainmenu->getActive()!== $mainmenu->getDefault()) :
$livesite = substr_replace(JURI::root(), », -1, 1);
$document = JFactory::getDocument();
$docroute = JRoute::_(K2HelperRoute::getItemRoute($this->item->id.’:’.$this->item->alias, $this->item->catid.’:’.$this->item->category->alias));
// Начало проверки системной ссылки в запросе
$requrl = trim(JFactory::getURI()->toString());
(bool)$valideurl = strpos( $requrl, $docroute );
// Если системная ссылка в запросе отсутствует
if ($valideurl === false) :
header(«HTTP/1.1 301 Moved Permanently»);
header(«Location: «.$livesite.$docroute);
header(«Connection: close»);
exit();
// Если хотим отдать ошибку 404, то закомментируем 4 строки выше этой, и раскомментируем 1 сроку ниже.
//JError::raiseError(404, JText::_(‘PAGE COULD NOT BE FOUND’));
endif;
// Конец проверки системной ссылки в запросе
$document->addHeadLink( $livesite . $docroute, ‘canonical’, ‘rel’, » );
endif;
// ———— End Canonical-Mod
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Joomla
Выдаёт системную ошибку при создании нового материала на Joomla 5.0.1 и как от него избавиться?
- 1 подписчик
- 08 янв.
- 31 просмотр
SEO Joomla. Канонические ссылки в меню сайта Joomla
Для того, чтобы поисковые роботы могли правильно определить ссылку, которую использовать в поисковой выдаче, требуется показать им, какая из возможных ссылок является ведущей. Это особенно важно, когда на сайте происходят изменения названий (алиасов) и когда есть пагинация (разбиение контента на несколько страниц). Тогда возникают дубли страниц с одинаковым контентом, но с разным URL. Для чёткого указания поисковым машина того, какую ссылку считать ведущей (канонической), нужно прописать ей атрибут rel=»canonical» . В этой статье разберём то, как прописать всем пунктам меню сайта на CMS Joomla данный атрибут. Это важно сделать, так как дубли страниц так или иначе присутствую на любом сайте, и в поисковую выдачу может попадать вовсе не та ссылка, на которую рассчитывал вебмастер сайта. К тому же, это может благоприятно сказаться на благоприятном восприятии сайта в целом поисковыми машинами. СЕО сайта на Joomla — полезная работа в плане продвижения сайта в поисковой выдаче. Это ведёт к увеличению количества целевых посетителей сайта.
Модуль mod_menu , отвечающий за создание и отображение меню сайта на Joomla
В данной статье разберём SEO стандартного модуля Joomla, с помощью которого создаётся и отображается меню сайта, с точки зрения создания в нём канонических ссылок. В процессе работы с сайтом данный модуль может быть переопределён в шаблоне сайта, поэтому нужно посмотреть в папке: /templates/название_шаблона/html/ , нет ли в ней папки mod_menu . Если нет, значит файлы этого модуля не переопределены и используется стандартный набор файлов этого модуля, который находится в папке:
/modules/mod_menu/
Внесение изменений в Модуль mod_menu для создания канонических ссылок в меню сайта на Joomla
Определившись с тем, где находятся рабочие файлы модуля меню сайта, осталось определиться, в каком файле происходит формирование ссылок пунктов меню. Это происходит в файле:
/modules/mod_menu/tmpl/default_url.php
Код этого файла довольно простой и короткий. С помощью этого кода происходит проверка переменных Joomla на наличие дополнительных настроек для отображения пунктов меню, а в последней строчке идёт формирование HTML-кода конечной ссылки, которая будет помещена в код меню на странице сайта.
Для того, чтобы доиться решения поставленной задачи, допишем в предпоследнюю (65-ю строку) следующее условие:
if (isset ($attributes['rel'])) < $attributes['rel'] .= ' canonical'; >else
Этим условием мы проверим, есть ли уже в атрибуте rel у ссылки какие-то параметры, и если есть, допишем к ним canonical (с пробелом), а если никаких значений этого атрибута не содержится, то присвоим этому атрибуту значение canonical .
Заключение
После сохранения этого изменения в код модуля меню сайта Joomla, получим во всех пунктах этого меню канонические ссылки (с указанием атрибута rel=»canonical» ). Что нам и требовалось. Ещё одна задача по SEO сайта на Joomla решена.
P.S.
При обновлении Joomla, эта правка будет слетать. Так что после обновления Joomla нужно следить и возобновлять те правки, которые были сделаны до этого.
Для пунктов меню, образованных компонентами, нужно вставить код, указанный выше в файл:
/modules/mod_menu/tmpl/default_component.php
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! 😉
Зачем нужен rel canonical
Canonical — в переводе с английского канонический, то есть принятый за образец, эталонный. У web-мастеров это слово имеет свое утилитарное назначение: в HTML-коде оно указывает на приоритетную для индексации страницу, контент которой частично или полностью дублируется в других документах на сайте. Попробуем разобраться с логикой применения тега canonical.
Что такое rel canonical
Чтобы объяснить на пальцах, что такое тег «рел каноникал», нужно начать с базовых терминов из словарика юного HTML-щика.
Атрибут rel (от англ. relationship — взаимосвязь) определяет отношения между текущей страницей и документом, на который ведет ссылка под атрибутом href.
В свою очередь, атрибут href (от англ. hypertext reference — гиперссылка) сообщает, о какой ссылке вообще идет речь, т. е. задает адрес документа.
Rel с помощью разных атрибутов сообщает поисковому роботу, что ему делать с указанной далее ссылкой. Например:
→ Команда поисковому боту не переходить по ссылке.
→ Команда боту расценивать страницу по ссылке приоритетной при индексации.
Именно каноническую страницу поисковик будет выводить на SERP (страницу выдачи). Правда, это не совсем команда, а, скорее, пожелание. Поисковик волен его проигнорировать и посчитать приоритетной любую из дублирующихся страниц.
Часто canonical называют meta-тегом, т.к. он прописывается в контейнере и передает уточняющую информацию краулеру, но, строго говоря, это не тег, а значение атрибута rel, который прописывается для тега .
Зачем вообще нужны эти заморочки с каноническими ссылками? Атрибут каноникал решает проблему с дублями страниц, которые негативно отражаются на продвижении сайта:
- тормозят индексацию;
- сжирают краулинговый бюджет (лимит на индексацию документов);
- понижают позиции в выдаче;
- подменяют релевантную страницу, по которой ведется продвижение;
- снижают эффективность ссылочного профиля сайта.
Чтобы как-то навести порядок с дублями, в 2009 г. команда Google дала возможность web-мастерам канонизировать URL определенной страницы. Как это было, читайте здесь: Specify your canonical | Google Search Central Blog.
Настройка канонических документов не только обеспечивает приоритет при индексировании и избавляет от проблем с совпадающими кусками контента, но и передает ссылочную массу со всех дублей на основной адрес.
Когда нужна канонизация

Атрибут rel canonical помогает закрывать от индексации дубли. Ситуации, когда на различающихся URL оказывается одинаковый контент, чаще всего возникают по трем причинам.
HTTP:// и HTTPS:// протоколы
- http://www.site.ru
- http://site.ru
- https://www.site.ru
- https://site.ru
С точки зрения робота это 4 разных сайта, но для пользователя, с какого бы адреса он ни зашел, не будет никакой разницы. Это классический случай, когда на пустом месте поисковый алгоритм может обнаружить дубли, поэтому нужно указать ему canonical URL.
Важно! Если вы работаете по SSL-протоколу, каноническим нужно назначить адрес HTTPS, т.к. защищенный домен — это важный фактор ранжирования.
Генерирование дублей CMS
Сейчас даже самый скромный интернет-магазин предлагает покупателям возможность настроить параметры выбора товара.
Например, мы продаем садового гнома. Основная его категория в каталоге — «Садовые фигуры», но к 8 марта мы решили предложить гнома в разделе «Подарок маме». И вот у нас уже 2 URL на одну позицию:
- https://site.ru/sadovie_figuri/gnom-001/
- https://site.ru/podarok_mame/gnom-001/
Таких категорий может быть очень много: «Садовые гномы до 50 см», «Фигуры для сада производства Франции» и т.п. И все это дубли исходной карточки нашего гнома-001 на различающихся URL. Чтобы поисковик не запутался и не пессимизировал сайт из-за кучи дублирующегося контента на разных адресах, нужно присвоить приоритетному URL атрибут rel со значением canonical.
По такому принципу CMS генерируют дублирующиеся страницы везде, где возможна сортировка позиций по различным параметрам: цене, популярности, отзывам, прочим фильтрам (цвет, размер, сезон, бренд и т.п.). Сюда же можно отнести адреса с динамическими GET-параметрами и UTM-метками для отслеживания рекламных кампаний или переходов из соцсетей.
Пагинация
Пагинация — это распределение большого массива данных по страницам. Она существенно облегчает работу пользователя с большими объемами информации и увеличивает скорость загрузки сайта. Без пагинации страница сайта с каталогом товаров или библиотекой статей будет разворачиваться этаким бесконечным манускриптом.
Пагинация реализуется разными способами. Обычно это или список с номерами страниц, или буквенный каталог, или цифры, задающие диапазон отображаемых карточек.

Так реализована пагинация в блоге студии Диус: на каждой странице размещается по 40 карточек статей, нажав на цифру 2 (3, . ), пользователь попадает на следующую страницу библиотеки.
Пагинация делает удобным взаимодействие с сайтом, но переходы между страницами провоцируют формирование дублей. Чтобы этого избежать, можно использовать canonical одним из двух способов:
- Создаем глобальную страницу-свиток «Показать все» и указываем ее как rel=canonical для всех страниц пагинации. Метод рекомендует Google, но он эффективен только для небольших каталогов. В больших интернет-магазинов страница с тысячами карточек будет грузиться долго и мучительно, а скорость загрузки — важнейший фактор ранжирования.
- Каждую из всех имеющихся страниц пагинации назначаем канонической в отношении самой себя. Минус метода — на всех этих страницах метатеги Title и Description не будут различаться, а это боль и страшный сон для SEO-специалистов.
Правила формирования канонических страниц
Чаще всего канонической назначается первоисходая страница, где с самого начала был опубликован дублирующийся в дальнейшем контент. Прописывая для тега атрибут rel=canonical, нужно соблюдать определенные правила.
- Каноническая ссылка ведет на реальную страницу на том же домене (а для Яндекса на том же поддомене) и имеет код ответа 200.
- На страницу приходится только одна каноническая ссылка.
- Для приоритетной страницы указывается rel canonical на нее же: так робот понимает, что она тут за главную.
- Для основного URL не может быть запрета на индексацию в служебном файле robots.txt.
- Все дубли ссылаются на один и тот же link canonical, иначе бот проигнорирует указания.
- Цепочки канонических URL запрещены: если Вася признает царем Петю, то Петя может считать царем только себя любимого. В группе дублей приоритетная страница может быть только одна.
- В теге href прописывается абсолютный адрес ссылки: URL целиком по формуле https://site.ru/page1. Относительные адреса, обрезающие вид протокола и название домена, не рекомендуются.
Как правильно настроить канонизацию

Путь настройки canonical зависит от характера дублирующихся документов и от способа управления содержимым сайта.
Вручную в HTML-коде
Характер дублей: HTML-документы.
Где руками прописывать атрибут rel=canonical, мы уже выяснили: выбираем приоритетную страницу и даем указания боту в HTML-коде в контейнере по формуле: . После остается ввести эту команду на все дубли.
В плагине CMS
Характер дублей: HTML-документы.
На большинстве популярных движков — в базовой комплектации или в виде отдельного плагина — предусмотрен функционал для автоматической настройки канонизации. Например:
- для WordPress плагин Yoast SEO;
- для OpenCart модуль Uni SeoPro;
- для Joomla версии 3+ встроенный модуль SEF: в код /index.php?option прописывается rel=»canonical» с приоритетным человекопонятным URL.
В заголовке HTTP
Характер дублей: документы не в формате HTML.
Часто возникает ситуация, когда статью с инструкциями оформляют PDF-форматом для удобного скачивания или распечатки. Так на сайте появляются два документа с одинаковым контентом. Если вам нужно закрыть дубль файла формата .pdf, .doc, .kml, .ppt, .odp или другого не HTML-формата, у которого нет контейнера , можно прописать rel=»canonical» в заголовке HTTP, применив служебные файлы .htaccess или PHP. Вносить директивы получится только при наличии доступа к серверным настройкам.
На запрос дубля сервер должен отдавать адрес первоисточника.
Внесение команды в HTTP-заголовок через PHP:
header ( ‘Link: ; rel="canonical"’ );
Внесение команды в HTTP-заголовок через .htaccess:
Header set Link ‘;rel="canonical"’
В файле Sitemap
Характер дублей: HTML-документы. Карта сайта создается для ускорения индексации и не заменяет указание canonical в коде.
Google настаивает, что в Sitemap нужно указывать только канонические ссылки. Соответственно, все URL в XML-файле поисковики будут по умолчанию считать приоритетными при индексировании.
Через 301 редирект
Характер дублей: зеркала сайта, устаревшие данные.
Перенаправить трафик и передать вес на основную страницу с дублей можно, настроив 301 редирект. Способ актуален для следующих ситуаций:
- у ресурса сменился домен;
- страница навсегда переехала на новый URL;
- контент на странице устарел, но имеет хороший ссылочный профиль и приводит трафик;
- для 404 ошибки.
Ошибки настроек canonical

Ошибки канонизации сводят всю кропотливую работу на нет: поисковые роботы просто игнорируют некорректные рекомендации. Перечислим самые распространенные траблы.
- На странице больше одной каноникал-ссылки. Поисковый бот не будет разбираться, что вы там имели в виду и проигнорирует все.
- Конфликт canonical URL при разных способах настройки каноничности. Если вы настраиваете каноничность для одного документа разными способами (в контейнере , в HTTP-заголовке или в XML-файле), нужно следить, чтобы он везде указывал на одну и ту же ссылку.
- Цепочка канонических ссылок. Страница, которая указывается в дублях как основная, не может иметь настроек каноничности ни на какую другую, кроме себя самой. У основной страницы не может быть никаких других приоритетов: она сама себе канон.
- Атрибут rel=»canonical» потерялся за границами контейнера . В HTML rel canonical прописывается только внутри блока , где сосредоточены добрые советы от web-мастеров ботам Яндекса и Google. Вне этого контейнера указание каноничности не имеет силы.
- Каноном объявляется первая страница пагинации. Если рекомендованные способы настройки каноничности для страниц пагинации вам по каким-то причинам не подходят, лучше вообще обойтись без canonical и запретить их индексацию, оставив возможность боту переходить по ссылкам с помощью настройки метатега .
- Настройка 301 редиректа не по назначению. Rel canonical по сути похож на 301 редирект, но это не взаимозаменяемые вещи:
- 301 редирект перекидывает на другой URL любого заглянувшего: не только поискового бота, но и живых посетителей;
- rel canonical перекидывает на другой URL только бота и все плюшки со страницы, в остальном неканоническая страница нормально открывается, собирает трафик, живет своей жизнью, но не индексируется.
- Канонический URL недоступен для индексирования. Вся кропотливая работа может оказаться бессмысленной, если приоритетный URL будет закрыт для индексации. В этом случае бот проиндексирует то, что ему заблагорассудится.
Проверка настроек canonical
Для контроля канонических ссылок удобен многофункциональный инструмент комплексной SEO-проверки Screaming Frog SEO Spider Website Crawler. Если вам нужно проверить меньше 500 URL, будет достаточно бесплатной версии. За безлимитную лицензию придется платить £149.00 в год. Отчет Canonical доступен во вкладке Canonicals.

В Google Search Console есть свой инструмент для анализа URL. Подробнее о работе с инструментом читайте в справке суппорта Google здесь.
В Yandex отчет по canonical находится в панели Вебмастера во вкладке «Индексирование» → «Страницы в поиске». При корректной настройке каноничности дубли страниц исчезают из поиска и попадают в список «Исключенные страницы».
Когда Яндекс-бот находит какие-то нестыковки, он присылает уведомление с разъяснениями, что не так и как это исправить. Но известны случаи технических сбоев, когда web-мастера получали странные послания, что «у важных страниц изменился атрибут rel canonical», хотя никаких манипуляций с канонизацией перед этим не проводилось.
Выводы
Rel canonical — эффективное оружие в войне с дублями — неизбежными, но такими опасными для ранжирования сайта. На первый взгляд, работа по настройке канонических страниц кажется запутанной и сложной. Но, если понять логику переадресации поискового бота на приоритетную страницу, то все оказывается не так страшно. Главное, следовать рекомендациям и не допускать критических ошибок.
Страшная SEO-ошибка в Joomla 3.
Проблема сводится к тому, что большинство страниц сайта, созданного на Joomla 3, никогда не будут проиндексированы поисковыми системами.

Да, знаю. Заголовок попахивает желтизной. Но я не шучу. Это абсолютная правда. В двух словах, проблема сводится к тому, что большинство страниц сайта, созданного на Joomla 3, никогда не будут проиндексированы поисковыми системами. Подробности далее.
Не стоит волноваться, если сайт уже сделан на Joomla 3. То, о чем пойдет речь ниже, просто гадкий баг, информация о котором добавлена в баг-трекер Joomla еще с первых версий Joomla 3. Устраняется он за пару минут. Но почему-то уже прошло большое обновление, а ошибка так и не исправлена. Но давайте по-порядку.
Существует такое понятие, как канонические URL. Вот как объясняет этот термин Google:
Что такое каноническая страница?
Каноническая страница – это рекомендуемый экземпляр из набора страниц с очень похожим содержанием.
Зачем нужно указывать каноническую страницу?
Часто сайты содержат несколько страниц, на которых перечислены одни и те же товары. Например, на одной странице продукты могут быть указаны в алфавитном порядке, а на других – упорядочены по цене или рейтингу. Примеры:
Если Google будет знать о том, что содержание этих страниц одинаково, то сможет добавить в результаты поиска только одну из них. Наши алгоритмы выбирают ту страницу, которая, по нашему мнению, лучше всего отвечает на запрос пользователя. Тем не менее, теперь пользователи могут указывать поисковым системам каноническую страницу, добавив элемент с атрибутом rel=»canonical» в раздел неканонической версии страницы. Добавление этой ссылки и атрибута позволяет владельцам сайтов определять наборы идентичного содержания и сообщать Google: «Из всех страниц с идентичным содержанием эта является наиболее полезной. Установите для нее наивысший приоритет в результатах поиска».
Если объяснять простым языком, вы можете добавить странице A атрибут rel=canonical и ссылку на страницу Б. Тогда поисковые системы будут считать страницу А дублем страницы Б и никогда не добавят ее в индекс. Вы спросите: «Ну а при чем же тут Joomla 3?». Разработчики внедрили поддержку этого атрибута в SEF-плагин, но допустили ошибку, из-за которой все материалы категории автоматически становятся страницей А из нашего примера, а страницей B становится список материалов категории (или страница блога категории). Короче говоря, при включении SEF в Joomla 3, всем статьям категории присваивается атрибут rel=canonical. Финиш.
Единственным исключением являются материалы, связанные напрямую с пунктом меню. Т.е. пункт меню типа «Материал».
Ошибка актуальна для последней на сегодняшний день версии Joomla 3 – Joomla 3.0.3. Что будет дальше – не знаю. Надеюсь, разработчики исправят эту глупость. Пока исправляем самостоятельно.
Находим файл: plugins/system/sef/sef.php и комментируем в нем 51 строчку:
$doc->addHeadLink($link, 'canonical');
Google довольно быстро реагирует на исправление бага. Уже через пару недель страницы будут добавлены в индекс. С Яндексом все печальнее. Практика показала, что требуется 1.5 – 3 месяца, либо писать в поддержку.
В Joomla 3.1 проблема решена для категорий, но все еще присутствует для компонентов, перенаправляя их не совсем корректно(пример: теги).
В Joomla 3.4.x ошибка решена полностью.