Настройка правильной с точки зрения SEO пагинации в Joomla на примере шаблона ProtoStar
Настройка правильной с точки зрения SEO пагинации в Joomla на примере шаблона ProtoStar

Вопрос о том. как правильно подать материалы сайта поисковым машинам тогда, когда на сайте Joomla включается пагинация меня давно волновал. В базе проиндексированных страниц и страниц, находящихся в индексе поисковой базы уже несколько десятков тысяч, но есть дубли. Разработчики Joomla почему-то до сих пор не озаботились этим вопросом: тем, как правильно настроить индексирование страниц сайта с включённой пагинацией, хотя разработчики поисковых машин уже давно предложили решение того, как обходить все страницы пагинации и собирать вес со всех страниц, передавая его на первую страницу с включенным модулем пагинации. Пришло время разобраться с этим вопросом и решить его на примере шаблона Protostar. Для других шаблонов решение должно быть похожим на то, что я предлагаю в этой статье.

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Внимание!
Всё описанное в этой статье не будет играть никакого значения, так как в спецификации HTML нет значения canonical атрибута rel для тега <a>. Есть только для тега <link>.
Поэтому, описанное ниже никак не повлияет на SEO Joomla.
Статью оставляю, так как в ней содержатся полезные сведения работы расширений Joomla. В остальном, данный подход в создании канонических ссылок не будет работать до тех пор, пока в спецификации HTML не появится данная опция для тега <a> и/или поисковые машины не начнут её использовать.

Как правильно настроить пагинацию страниц Joomla с точки зрения SEO

Первым делом разберёмся с тем, как правильно настроить пагинацию страниц Joomla с точки зрения СЕО. Вот что пишет Платон Щукин в рекомендациях Яндекса по этому вопросу ещё в 2015-году (и информация до сих пор актуальная и используется в поисковых алгоритмах как Яндекса, так и Google для определения основной страницы из списка страниц со включённой пагинацией):

Что делать со страницами пагинации и сортировки товаров?

Если в какой-либо категории на вашем сайте находится большое количество товаров, могут появиться страницы пагинации (порядковой нумерации страниц), на которых собраны все товары данной категории. Если на такие страницы нет трафика из поисковых систем и их контент во многом идентичен, то советую настраивать атрибут rel="canonical" тега <link> на подобных страницах и делать страницы второй, третьей и дальнейшей нумерации неканоническими, а в качестве канонического (главного) адреса указывать первую страницу каталога, только она будет участвовать в результатах поиска.

И это действительно должно работать: атрибут rel="canonical" тега <link> для первой (основной) страницы с пагинацией даст знать поисковому роботу, что именно эту страницу нужно включить в поисковую базу проиндексированных страниц, и в тоже время позволит пройти роботу дальше по ссылкам пагинации, собрав веса со ссылок на второстепенных страницах, передав их по назначению тем материалам, которые там расположены.

Как не надо настраивать пагинацию страниц Joomla с точки зрения SEO

Некоторые вебмастера решают эту задачу, закрывая доступ поисковым роботам в файле robots.txt на вложенные страницы пагинации директивой Disallow. Для Joomla это будет выглядеть так:

Disallow: *?start*

Это сработает и дубли не попадут в поисковую базу, но при этом не будет собрана информация со страниц пагинации. Зачем исключать из поисковой работы те страницы, которые есть на сайте, если они реально имеют ссылки, которые могут получить дополнительный вес со второстепенных страниц пагинации?

Текущее положение с пагинацией в Joomla на примере шаблона Protostar

Посмотрим в код одной из страниц Joomla, на которой есть пагинация:

<nav role="navigation" aria-label="Разбиение на страницы">
 <ul class="pagination-list">
  <li><a title="В начало" href="/cms/joomla/kunena/kunena-forum.html" class="pagenav" aria-label="Перейти на В начало страницу "><span class="icon-first" aria-hidden="true"></span></a></li>
  <li><a title="Назад" href="/cms/joomla/kunena/kunena-forum.html" class="pagenav" aria-label="Перейти на Назад страницу "><span class="icon-previous" aria-hidden="true"></span></a></li>
  <li class="hidden-phone"><a title="1" href="/cms/joomla/kunena/kunena-forum.html" class="pagenav" aria-label="Перейти на страницу 1">1</a></li>
  <li class="active hidden-phone"><a aria-current="true" aria-label="Страница 2">2</a></li>
  <li class="hidden-phone"><a title="3" href="/cms/joomla/kunena/kunena-forum.html?start=12" class="pagenav" aria-label="Перейти на страницу 3">3</a></li>
  <li><a title="Вперёд" href="/cms/joomla/kunena/kunena-forum.html?start=12" class="pagenav" aria-label="Перейти на Вперёд страницу "><span class="icon-next" aria-hidden="true"></span></a></li>
  <li><a title="В конец" href="/cms/joomla/kunena/kunena-forum.html?start=12" class="pagenav" aria-label="Перейти на В конец страницу "><span class="icon-last" aria-hidden="true"></span></a></li>
 </ul>
</nav>

Как видно из кода, приведённого выше, все ссылки в этом расширении Joomla имеют равный вес и ссылки передаются без каких либо указаний в HTML-теге <a>. Тогда, как в ссылке <a title="В начало" href="/cms/joomla/kunena/kunena-forum.html" class="pagenav" aria-label="Перейти на В начало страницу "> хорошо бы передать атрибут rel="canonical" для указания поисковым машинам на то, что это ссылка на каноническую страницу и именно её и нужно использовать в поисковой выдаче.

Как это сделать?

Исправление шаблона пагинации в Joomla для SEO на примере шаблона Protostar

Итак, за пагинацию в шаблоне Protostar отвечает файл, находящийся тут:

/templates/protostar/html/pagination.php

В районе 153-й строчки идёт проверка и формирования ссылки на первую страницу пагинации:

	// Check for "Start" item
	if ($item->text === JText::_('JLIB_HTML_START'))
	{
		$display = '<span class="icon-first" aria-hidden="true"></span>';
		$aria    = JText::sprintf('JLIB_HTML_GOTO_POSITION', strtolower($item->text));
	}

Допишем сюда ещё одну переменную $canonical со значением rel="canonical". Это позволит определить значение этой переменной при формировании кода пагинации страницы. Если при формировании страницы этой ссылки на стартовую страницы не будет, то значение переменной $canonical будет не определено. В итоге получим ещё одну строку:

	// Check for "Start" item
	if ($item->text === JText::_('JLIB_HTML_START'))
	{
		$display = '<span class="icon-first" aria-hidden="true"></span>';
		$aria    = JText::sprintf('JLIB_HTML_GOTO_POSITION', strtolower($item->text));
		$canonical = ' rel="canonical"';
	}

Теперь осталось только включить значение этой переменной в формирование HTML-кода ссылки на первую страницу пагинации в районе 189-й строки.

Было:

	return '<li' . $class . '><a title="' . $item->text . '" href="' . $item->link . '" class="pagenav" aria-label="' . $aria . '">' . $display . '</a></li>';

Стало:

	return '<li' . $class . '><a' . $canonical . ' title="' . $item->text . '" href="' . $item->link . '" class="pagenav" aria-label="' . $aria . '">' . $display . '</a></li>';

Теперь, обновив страницу с пагинацией увидим:

<nav role="navigation" aria-label="Разбиение на страницы">
 <ul class="pagination-list">
  <li><a rel="canonical" title="В начало" href="/cms/joomla/kunena/kunena-forum.html" class="pagenav" aria-label="Перейти на В начало страницу "><span class="icon-first" aria-hidden="true"></span></a></li>
  <li><a title="Назад" href="/cms/joomla/kunena/kunena-forum.html" class="pagenav" aria-label="Перейти на Назад страницу "><span class="icon-previous" aria-hidden="true"></span></a></li>
  <li class="hidden-phone"><a title="1" href="/cms/joomla/kunena/kunena-forum.html" class="pagenav" aria-label="Перейти на страницу 1">1</a></li>
  <li class="active hidden-phone"><a aria-current="true" aria-label="Страница 2">2</a></li>
  <li class="hidden-phone"><a title="3" href="/cms/joomla/kunena/kunena-forum.html?start=12" class="pagenav" aria-label="Перейти на страницу 3">3</a></li>
  <li><a title="Вперёд" href="/cms/joomla/kunena/kunena-forum.html?start=12" class="pagenav" aria-label="Перейти на Вперёд страницу "><span class="icon-next" aria-hidden="true"></span></a></li>
  <li><a title="В конец" href="/cms/joomla/kunena/kunena-forum.html?start=12" class="pagenav" aria-label="Перейти на В конец страницу "><span class="icon-last" aria-hidden="true"></span></a></li>
 </ul>
</nav>

То есть задача решена. В строке со ссылкой на первую страницу пагинации мы поставили нужный для правильного СЕО атрибут rel="canonical".

Выводы

Таким образом, небольшой правкой в коде формирования пагинации расширения Joomla можно решить глобальную задачу указания поисковым роботам страницы, которую требуется использовать в индексе ссылок поисковой выдачи с сайта. И это решение более правильное с точки зрения SEO в сравнении с ограничением доступа поисковым ботам на страницы пагинации в файле robots.txt.

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню