• Что можно приготовить из кальмаров: быстро и вкусно

    Мы выпустили новую книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».

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

    .

    Больше видео на нашем канале - изучайте интернет-маркетинг с SEMANTICA

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

    Чтобы понять, что из себя представляет пагинация, разберем простую аналогию. Когда мы используем справочную литературу или печатный каталог, мы видим, что информация в нем представлена в упорядоченном виде. Товарные позиции или профессиональная информация не представлены сплошным перечнем. Это позволяет облегчить использование издания и быстро найти то, что нужно. Пагинация решает аналогичные задачи: упростить просмотр товаров, сделать его удобнее.

    Сегодня пагинации бывают нескольких типов:

    • Прямая нумерация («1», «2», «3»...).
    • Прямая с указанием позиций в списке («1-10», «10-20» ...).
    • Обратная с позициями («40-30», «30-20», «20-10» ...).

    Зачем нужна пагинация

    Сегодня ведущие интернет магазины применяют пагинацию. Она значительно упрощает использование сайта. Представьте, что на одной странице размещен весь ассортимент, несколько тысяч изделий. Это определенно можно сделать, ведь интернет-страница безгранична, чего нельзя сказать о бумажной. Но нельзя забывать, что скорость соединения лимитирована, следовательно: чем больше товарных позиций на странице, тем дольше она загружается.

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

    Как сделать пагинацию

    Разберем, как сделать пагинацию на скриптовом языке PHP, так как он сегодня чаще всего используется для разработки веб-приложений.

    Итак, у нас есть много контента (перечень товарных позиций, различные заметки и так далее). Нам нужно организовать его для удобного представления на страницах сайта, то есть разбить его.

    Для начала определяем, сколько у нас будет страниц, сколько из них будет отображаться в пагинации и какова текущая. Возьмем 45 страниц, текущую возьмем с $_GET"а (если ее нет, она равна 1). Число страниц, отображаемых в пагинации, оставляем гибким, чтобы корректировать число ссылок справа и слева от текущей.

    Мы прописали сами данные, приступим к разработке пагинации. Она реализуется с помощью специальной функции - makePage, которая задается 4 параметрами: $iCurr (текущая страница), $iLastPage (последняя страница), $iLeftLimit (лимит слева), $iRightLimit (лимит справа).

    Прописываем код:

    Вывод при этом может иметь следующий вид:

    Рассмотрим написанный код. Наиболее простым вариантом из возможных является ситуация, когда мы в центре (к примеру, на странице 8), справа и слева свободно отображаются страницы.

    Если мы находимся в начале, используем другой код:

    При этом $iSlice - это число элементов, которые не показываются с левой стороны, их нужно добавить с правой стороны.
    И последний вариант. Представим, что мы находимся в конце пагинации. Прописываем другой код:

    На этом все.

    Проблемы с пагинацией при SEO

    Как вы выяснили, для юзабилити ресурса, пагинация - это всегда большой плюс. А вот для успешного СЕО продвижения пагинация может стать препятствием. Необходима правильная пагинация, в противном случае ресурс рискует потерять позиции в результатах поисковиков:

    • Поисковики могут применить штрафные санкции за повторение контента.
    • Товарные позиции долго индексируются, их трудно или вовсе нельзя найти через поиск.

    Робот поисковиков находится на сайте ограниченное время. Представим, что бот зашел в интернет-магазин мужской одежды, где на каждой странице представлено 30-40 позиций, отличие позиций заключается лишь в наименовании брендов. Робот может просто не дойти до нужной позиции, потому что она находится на нижнем уровне. Однако владельцу интернет-ресурса нужно обратное, чтобы страницы были проиндексированы.

    Если говорить о повторяющемся контенте, позиция поисковиков к нему резко отрицательная. Объясняется это просто: каждой странице должен соответствовать релевантный контент. Если контент схож, например, список товаров + описание групп одинаковые либо похожи, поисковику трудно определить релевантную страницу из представленных.Значимость страниц распыляется и теряется, главная страница уже не выделяется на фоне остальных. Следовательно, в выдаче поисковика сайт теряет позиции.

    SEO и пагинация

    Наша задача составить пагинацию таким образом, чтобы она нВ худшем раскладе не вредила СЕО, а в лучшем - улучшала позиции сайта в результатах выдачи поисковиков. Сделать это можно несколькими способами.

    Закрыть пагинацию для индексации

    Многие задаются вопросом, как закрыть страницы пагинации от индексации. Для этого есть несколько решений.

    • Использовать мета-тег NOINDEX.

    Здесь в «головную» секцию каждой страницы, кроме первой, мы вставляем строчку: . Таким образом мы не разрешаем роботу индексировать данную страничку, но позволяем проходить по ее ссылкам.

    Здесь важно проработать XML карту ресурса. Если страницы ресурса динамичные, то есть можно использовать фильтры, ссылка первой веб-страницы должна выглядеть так: название домена/catalog. Со страниц «название домена/catalog?page=1» делаем редирект 301 на веб-страницу «название домена/catalog».

    Важно учитывать ряд нюансов. Тег NOINDEX воспринимается индексом, однако Google его не читает. Если сайт обладает внушительном количеством динамичных страниц, на каждый из них нужно прописать NOINDEX. Весь контент при этом исключается из пагинации, кроме контента первой страницы.

    • Использовать файл robots.txt.

    Страницы пагинации имеют определенный вид «вид http://название домена/category/page/n», в которых n- номер страниц. Необходимо прописать robots.txt, присвоить ему определенную команду: «Disallow: /category/page». Данный способ универсален и подходит для любых поисковиков. Однако нюанс сохраняется: весь контент со страниц пагинации, кроме контента первой, будет исключен.

    Применять страницу «Смотреть все» и тег CANONICAL

    Смысл в следующем: создается веб-страница, где будут отображаться все имеющиеся товары. Для поисковиков данная страница указывается как каноническая через тег CANONICAL.

    Здесь также не обойтись без нюансов: если товаров много, такая страница будет загружаться долго. Зато тег распознается всеми поисковиками (Google считает его приоритетным) и контент будет полностью проиндексирован.

    Есть и минусы: имеются ограничения объема и качества контента, а при большом количестве товарных позиций и фильтров, необходимо прописать CANONICAL для каждой динамической страницы.

    Решил описать такой на первый взгляд простой но очень интересный момент в web программирование как пагинация.
    Наверное каждый web программист хоть раз да и сталкивался с пагинацией, и понимает что универсального решения нет! По этому я предлагаю посмотреть те простые решения которые сам использую.

    P.s. В топике приведен пример пагинации на php, без использования AXAJ и тд. Это сделано для того что б продемонстрировать саму суть, так сказать сделать каркас.

    Поехали!

    И так начнем. Представим что у нас есть большое количество какого то контента контента (заметки, товары и тд). И вот в один момент мы понимаем что отображать все это на одной странице, неправильно и не хорошо. По этому мы решаем этот контент разбить на части (страницы).
    Но для того что б нам это сделать нам нужно знать несколько значений.

    • Количество всех страниц.
    • Количество отображаемых страниц в пагинации.
    • Текущую страницу
    Если честно то данных нам нужно немножко больше, но все это зависит от того какую именно пагинацию мы хотим сделать, так что об остальных данных мы поговорим чуть позже.

    Допустим количество всех страниц нам известно и оно 45. Текущую страницу мы будем брать с $_GET"а, а если её там нет, то задавать она будет ровна 1.
    А вот с количеством отображаемых страниц все интересней, я решил дать нашему скрипту немного гибкости, так что мы могли сами задать количество ссылок с лева и права от текущей странице, выглядит это примерно так:

    /*текущая страница*/

    $iCurr = (empty($_GET["page"]) ? 1: intval($_GET["page"]));

    /*всего страниц или конечная страница*/

    $iLastPage = 45;

    /*левый и правый лимиты*/

    $iLeftLimit = 4;
    $iRightLimit = 5;

    /*вызов функции*/
    makePager($iCurr, $iLastPage, $iLeftLimit, $iRightLimit) ;

    Ну вот все данные у нас уже есть и можно заняться самой функцией пагинации.

    Наша функция называеться «makePager», и она ожидает от нас 4 параметра:

    1. текущая страница - $iCurr
    2. всего страниц или конечная страница - $iLastPage
    3. левый лимит - $iLeftLimit
    4. правый лимит- $iRightLimit

    Код:
    function makePager($iCurr, $iEnd, $iLeft, $iRight)
    {
    if($iCurr > $iLeft && $iCurr < ($iEnd-$iRight))
    {
    for($i=$iCurr-$iLeft; $i<=$iCurr+$iRight; $i++)
    {
    //вывод
    }}

    Elseif($iCurr<=$iLeft)
    {
    $iSlice = 1+$iLeft-$iCurr;
    for($i=1; $i<=$iCurr+($iRight+$iSlice); $i++)
    {
    //вывод
    }}
    else
    {

    <=$iEnd; $i++)
    {
    //вывод}}}

    Я специально убрал вывод, что б не засорять код, но он мог выглядеть например так:
    if($iCurr > $iLeft && $iCurr < ($iEnd-$iRight))
    {
    for($i=$iCurr-$iLeft; $i<=$iCurr+$iRight; $i++)
    {
    echo "".($i == $iCurr ? "".$i." " : $i)."" ;
    }}

    Давай посмотрим код поближе.
    Первый вариант развития событий, это если наша страница находиться где то в центре (например страница 8), и количество страниц с лева и с права могут свободно отображаться, это самый простой вариант из возможных.

    If($iCurr > $iLeft && $iCurr < ($iEnd-$iRight))
    {
    for($i=$iCurr-$iLeft; $i<=$iCurr+$iRight; $i++)
    {
    //вывод
    }}

    А что же будет если мы находиться например на странице номер 2?
    Ведь в условии мы задали что нужно отображать с лева 4 ссылки.
    Тогда нам на помощь приходит следующий код:

    Elseif($iCurr<=$iLeft)
    {
    $iSlice = 1+$iLeft-$iCurr;
    for($i=1; $i<=$iCurr+($iRight+$iSlice); $i++)
    {
    //вывод
    }}

    $iSlice - это количество элементов которые не будут показаны с лева, и которые соотвецтвенно нужно добавить справа, что количество ссылок оставалось постоянным.

    Можно было б if"ом запретить вывод страницы если она меньше 1 и больше макс. странице но это б было так не красиво.

    Ну и последний вариант, что если мы находимся например на 44 странице, и показать с права 5 мы не можем тк, страниц всего 45?
    И код:
    else {
    $iSlice = $iRight-($iEnd - $iCurr);
    for($i=$iCurr-($iLeft+$iSlice); $i<=$iEnd; $i++)
    {
    //вывод
    }}

    Вот так все просто.

    P.S.
    Еще несколько вариаций на тему:
    Если нам не важно что б количество выводимых ссылок было одинаковое то можно 2 и 3 условия заменить такими:
    //второе условия:
    elseif($iCurr<=$iLeft)
    {
    for($i=1; $i<=$iCurr+$iRight; $i++)
    {
    //вывод
    } }

    //третье условия:

    Else{
    for($i=$iCurr-$iLeft; $i<=$iEnd; $i++)
    {
    //вывод
    } }

    Теги: php, пагинация, пагинатор.

    Пагинация — постраничная навигация на сайте или еще проще, порядковая нумерация страниц сайта . Вроде бы банальное и распространенное явление, однако, до сих пор вокруг него ходят споры по поводу того, какой должна быть пагинация для SEO .

    Примеры и аргументы у всех свои, но суть, как правило, одна: больше страниц — лучше СЕО. Нет, не лучше. Почему я уже писал, но давайте рассмотрим подробнее постраничную навигацию на сайте . Какой должна быть порядковая нумерация страниц сайта, чтобы, как минимум, не навредить SEO. Почему не навредить? Потому что в задачи поисковой оптимизации сайта входит определение точного соответствия страницы ключевому запросу , а не создание бесконечного числа дублей одной и той же страницы с заголовком «Страница №911».

    Польза пагинации для SEO

    Давайте рассмотрим, какую невероятную пользу несет постраничная навигация для сайта в плане . Она обеспечивает доступ ко всем страницам сайта из списка страниц категории. Да, действительно. Особенно, когда у вас 50 страниц и чтобы добраться до, скажем, 21 страницы, поисковому роботу нужно углубиться на … сколько уровней? Найти на 21 странице товар или пост и углубиться еще на один уровень. Да, польза колоссальная, особенно если учесть, что поисковые боты не ходят глубже 3-4 уровней вложенности. Нет, ну конечно ходят, но ценность и сроки индексации с каждым уровнем падают в геометрической прогрессии.

    Что еще полезного нам несет порядковая нумерация страниц сайта? Она ограничивает количество ссылок на странице, ибо негоже более 100 ссылкам на одном холсте собираться. Вот это действительно польза. Есть еще косвенная польза, в виде , так как постраничная навигация — один из самых популярных и привычных методов отображения больших списков информации на сайте. За то и держим. Вот вроде бы и все.

    С пользой порядковой нумерации страниц сайта разобрались. Теперь разберемся, как использовать пагинацию и не испортить .

    SEO постраничной навигации на сайте

    Начнем с теории: каждая страница сайта должна отвечать на конкретный запрос . Это значит, что категория в которой много страниц, а именно ее основная каноническая страница с прямым адресом, должна отвечать на конкретный запрос. Следовательно, аналогичная страница с дубликатом содержимого, которое есть или когда-то было на главной странице категории, является не просто дубликатом, а что куда хуже — конкурентом главной страницы категории.

    Существуют уникумы, которые пытаются персонализировать номерные страницы категорий, добавляя в заголовки номера страниц и даже по шаблону меняя описание страницы. Но вот один вопрос: какому запросу отвечает любая из номерных страниц? Особенно, если учитывать миграцию содержимого со страницы на страницу. По какому ключевому запросу должна выйти в поисковой выдаче номерная страница категории, как ? Нет таких запросов. И как страницы для несуществующих запросов, в индексации сайта такие страницы участвовать не должны.

    Справедливости ради стоит сказать, что сейчас речь идет не о хаотичных источниках вроде плохо организованных форумов, где можно найти одно точное совпадение ключевому запросу где-нибудь на 768 странице в одном из сообщений. Я говорю о сайтах, где существует жесткая структура и четкая логическая организация ключевых запросов.

    Исключение пагинации из индексации

    В зависимости от того, как организована постраничная навигация на сайте, можно воспользоваться различными способами исключения страниц порядковой нумерации сайта. Рассмотрим примеры:

    Исключение пагинации через Канонические ссылки

    Если коротко, то каноническая ссылка — это ссылка на главную страницу раздела или ту страницу, которую решено считать главной. На каждой нумерованной странице указываем ссылку на главную и «о, чудо!» — все номерные страницы улетают, как исключенные из индексации. Если более развернуто, то читаем .

    А вот так выглядит код, который надо поставить на каждую номерную страницу:

    Исключение пагинации через Robots Disallow

    Представим, что адрес номерной страницы выглядит так:

    Http://site.ru/category/page/3

    Всего-то надо попросить поисковых роботов не ходить куда не надо, а именно:

    Disallow: /category/page

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

    Исключение пагинации динамических страниц

    Ежели пагинация на сайте организована средствами URL динамических:

    Http://site.ru/category?page=3

    Извольте воротиться в robots.txt прописать уже знакомые:

    Disallow: ?page=

    Clean-param: page /

    Привыкайте создавать на сайте только целевые страницы, которые несут в себе уникальную, полезную для посетителей информацию и страницы, которые не конкурируют между собой по ключевым запросам. Думайте, какие страницы должны быть закрыты, а какие открыты для индексации. И самое главное не гонитесь за количеством бессмысленных страниц — проиграете.

    Ставь лайк, делай репост, подписывайся на новые статьи, которые выходят каждый день.

    Всем привет! Есть в SEO, как кажутся, элементарные и очевидные вещи, но если немного разобраться в них, возникает много вопросов и нюансов, которые беспокоят владельцев проектов. Сегодня я хочу поговорить про страницы пагинации (или еще их называют страницами листинга). Хочется написать развернутый урок: что, зачем и почему, чтобы все разъяснить, как удалось это сделать с уроком .

    Я уже рассказывал на своем блоге, (там же и рассказывал, что такое постраничная навигация). Теперь пришло время показать, что нужно с ними делать с точки зрения SEO. Многих беспокоят следующие вопросы:

    • стоит ли их закрывать индексацию пагинации в robots.txt;
    • может стоит закрыть их с помощью meta name="robots";
    • или лучше использовать rel=canonical;
    • а может вообще их оставить открытыми для индексации;
    • ну и другие вопросы.

    Итак, поехали!

    Страницы пагинации - это страницы, которые создаются, когда список постов или товаров разбиваются на несколько страниц. Вот пример постраничной навигации на моем блоге, эти ссылки ведут на страницы пагинации:

    Как вы уже поняли постраничная навигация может быть на страницах, где размещено большое количество:

    • карточек товаров;
    • информационных постов;
    • обсуждения на форумах.

    Индексация пагинации

    Лучше страницы пагинации не запрещать от индексирования, чтобы роботы доходили до как можно большего количества товаров/постов (особенно важно, когда у вас очень много товаров). Но опять же, несмотря на то, что страницы открыты для индексирования, я бы рекомендовал сделать так, чтобы они не участвовали в основном поиске. Я противник низкокачественных страниц в индексе и считаю, что в поиске должны быть только нужные страницы, и важность подобных страниц будет выше, нежели будет полно низкосортного контента. Как же тогда быть?

    Вся сложность заключается в том, что у двух наиболее крупных поисковиков на нашем рынке (Яндекс и Google) разные требования. Давайте разберем их.

    Требования Яндекса

    Причем в данном случае проблем с индексацией товаров или постов не будет, так как rel=canonical не запрещает ходить роботам по страницам, но в индексе будет только основная страница в обоих поисковиках.

    Требования Google

    То есть Гугл не рекомендует, как это делает Яндекс, ставить каноникал на первую страницу, также он говорит, что это неправильно. Но по опыту замечено, что, если ставить rel=canonical на первую страницу, ничего критичного не происходит, сайты хорошо чувствуют себя в обоих поисковых системах.

    И да, есть такой момент: Яндексу все равно на теги rel=prev и rel=next, он не понимает их и просто игнорирует.

    А что же говорят SEOшники?

    Мнений на эту тему очень много, приведу парочку.

    Кто-то говорит, что каждую страницу пагинации нужно подтачивать под разные запросы. К примеру, первую страницу под "Купить ноутбук", вторую под "Купить ноутбук недорого", третью под "Купить ноутбук в интернет-магазине" и так далее. Не делайте так. Поисковики не настолько тупые, может быть это еще и работало лет 5-8 назад, но сейчас однозначно так не стоит делать.

    А кто-то говорит запретить в robots.txt или использовать тег meta name="robots" content="noindex,follow". Я раньше тоже так делал, но это не совсем правильно, так как поведенческие факторы со страниц пагинации не будут передаваться. Да и Яндекс также говорит:

    Я не продвигаю страницы категорий на блоге (а зря, я рассказывал про пользу правильной ), все руки не доходят, как-нибудь доберусь обязательно, уберу "noindex, follow". Тем, кто продвигает категории, рекомендую использовать инструкцию выше.

    Дублирование в пагинации

    Кстати, если Яндекс считает, что страницы пагинации - это дубли, то Google так не считает, ему главное указать rel=prev и rel=next. Если вы используете тег rel=canonical на основную страницу, то в индексе будет только она. Если же использовать только rel=prev и rel=next, страницы пагинации будут попадать в индекс поисковых систем.

    Теги prev и next показывают роботу, что страницы связаны в логической последовательности, как бы это одна большая страница. Именно поэтому одновременно использовать rel prev/next и rel canonical на основную страницу - неправильно. То есть, если вы хотите указать и каноникал, и prev/next, тогда каноникал указываем только на саму страницу (саму на себя).

    Как оформить страницы пагинации

    Текст описания рубрики/категории нужно выводить только на первой странице, на остальных страницах пагинации не выводим. Это чтобы не было сильного дублирования, да и текста в первую очередь все равно выводятся для роботов. И пользователи, уже перешедшие на вторую и др. страницы, уже не заинтересованы в текстах + улучшение юзабилити.

    Если у вас интернет-магазин, можно добавить ссылку на страницу "Все товары" данной категории. Это позволит просмотреть страницу сразу, без переходов на другие страницы. В этом случае rel=canonical поисковики рекомендуют ставить rel=canonical на эту страницу со всеми товарами без пагинации. Но здесь нужно быть аккуратным, потому что если выводить много товаров/постов, то страница подгружается дольше, а поисковики любят как можно более быстрые сайты.

    И еще, если мы находимся на второй или любой другой странице, ссылка на первую страницу должна идти сразу на основную, а не на /page/1, вот пример:

    Повторюсь, закрывать от индексации страницы пагинации не нужно. Опять же скриншот комментария "Платона" и ссылку на него уже приводил выше.

    Кто-то делает бесконечный скроллинг (товары/посты подгружаются по мере пролистывания страницы вниз). Если вы делаете это, снова нужно быть аккуратным. Либо кто-то выводит кнопки "Показать еще":

    Бесконечный скроллинг и прочие javascript/ajax использовать можно, но чтобы не было проблем, я бы рекомендовал сделать так, чтобы все элементы индексировались и отдавались роботу. И все же, я бы продублировал бесконечный скроллинг цифрами 1,2,3,4, так как некоторым пользователям так удобнее. Вот пример:

    Также, когда страниц очень много, можно сделать разбивку по 10 страниц для того, чтобы индексирующему роботу "бегать" по страницам было легче, да и страницы будут располагаться в меньшем количестве кликов. То есть выводим примерно так:

    1, 2, 3 ... 10, 20, 30, 40, 50, 60, 70...79.

    Вывод - как же в итоге поступить правильно?

    На мой взгляд есть 3 варианта наиболее правильных развития событий:

    1. Если вам важен Яндекс или интересны оба поисковика (практически для всех проектов под Россию), то делаем каноникал на первую страницу.
    2. Если интересует только Гугл (например, ваш сайт находится в странах СНГ, где в некоторых из них трафика в Яндексе практически нет, или зарубежные проекты), то делаем rel canonical саму на себя и прописываем prev/next.
    3. Если у вас есть страница, где выводятся все товары, можно указать рел каноникал на нее, использовать rel=prev и rel=next. Тогда будет правильно для обоих поисковых систем. Но в таком случае, напомню, минусы тоже есть: если у вас имеются категории, где выводятся больше количество товаров, то это замедлит скорость загрузки сайта, а это влияет на ранжирование.

    Во всех случаях запрета на индексирование не требуется (ни в robots.txt, ни в meta name="robots"). Не забываем, что текст размещаем только на 1-ой странице, чтобы не было дублей с большим количеством совпадений. Вы можете проследить за изменения страниц в индексе в панели вебмастеров Яндекса и Google.

    Если делать подобные шаги для оптимизации сайта, результат не заставит себя ждать. Вот свежий пример из последних наших работ (это суммарный трафик с поисковых систем, начали работать в октябре 2017-го года, кликните, чтобы увеличить):

    Ребята, кто успел попасть на предзапись моего SEO-марафона, я почти всем ответил на вопросы, осталось еще чуть-чуть, вопросов пришло очень много, разгребаю. 🙂 Если вдруг вы не успели записаться на предзапись марафона, ждите новостей на блоге (подпишитесь на рассылку по почте, чтобы не пропустить старт продаж), в феврале стартуем!

    Ну и вопрос: а что вы делаете со страницами пагинации на своих проектах?