21.06.2023

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


Решил описать такой на первый взгляд простой но очень интересный момент в 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 параметра:

  • текущая страница - $iCurr
  • всего страниц или конечная страница - $iLastPage
  • левый лимит - $iLeftLimit
  • правый лимит- $iRightLimit
  • Код:
    function makePager($iCurr, $iEnd, $iLeft, $iRight)
    {
    if($iCurr > $iLeft && $iCurr < ($iEnd-$iRight))
    {
    for($i=$iCurr-$iLeft; $i


    © 2024
    maccase.ru - Android. Бренды. Железо. Новости