Может войдёшь?
Черновики Написать статью Профиль

«Paginator»

Свой постраничный вывод с плюшками

laravel php paginator

Еще во времена laravel 3 поступило мне задание от очередного оптимизатора, которое заключалось в следующем:

  1. Постраничный вывод должен генерировать ссылки вида /news/page2, /news/page3 и тд
  2. Страницы /news/page1 не должно быть вообще, должно быть просто /news
  3. В title нужно добавить номер страницы как-то так: «оригинальный тайтл» — страница «номер страницы»
  4. Автоматическая генерация link rel="canonical" для страниц с номером, добавление link rel="prev" и link rel="next"

Посмотрев исходники я понял что проще написать свой FPagination. F — потому что fucking friendly.

Надежный как автомат Калашникова и простой как сатиновые трусы.

SEOFriendlyPaginator — пагинатор без зеркала первой страницы (?page=1) и несуществующих страниц (?page=999999)

версия 5.4 404 ошибка зеркала версия 5.x пагинатор seo paginator

В стандартном пагинаторе (PHPLengthAwarePaginator) есть пара досадных косяков:

  1. При выводе пагинатора на страницах >= 2 — ссылка на первую страницу идет в виде example.com/?page=1 и это создает «зеркало» страницы для поисковика — тот же самый контент находится и на странице example.com/.
  2. Если зайти на страницу example.com/?page=999999, то мы не увидим 404 страницу ошибки, а просто увидим пустую страницу с пагинатором.

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

sugoj

Если именно про сео... Обычно вся пагинация скрывается в robots.txt кроме основной странице. Так что сео-френдли пагинация не нужна.

← Назад | Дальше → Движется на Habravel