Назад

Как реализовать пагинацию через API в Битрикс

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

Реализация пагинации в Битрикс через API

В этом руководстве разберем, как правильно разбить данные на страницы с помощью API Битрикс.

1. Инициализация переменных

Получаем параметры page (текущая страница) и count (количество элементов на странице):

$count = $_REQUEST['count'] ?? 5; // По умолчанию 5 элементов на странице
$page = $_REQUEST['page'] ?? 1;  // По умолчанию первая страница

2. Получение данных с фильтрацией

Добавляем поиск по имени и артикулу, если передан параметр s:

if ($_REQUEST['s']) {
    $arFilterS = [
        "LOGIC" => "OR",
        $arFilter + ['NAME' => '%' . trim($_REQUEST['s']) . '%'],
        $arFilter + ['PROPERTY_ARTNUMBER' => '%' . trim($_REQUEST['s']) . '%'],
    ];
    $arFilter = $arFilterS;
}

// Получаем общее количество элементов
$allCnt = CIBlockElement::GetList(
    ["ID" => "DESC"],
    $arFilter,
    [],
    [],
    false
);

$arResult['ALL_COUNT'] = $allCnt;
$arResult['PAGE_COUNT'] = $count;

// Получаем элементы с пагинацией
$my_elements = CIBlockElement::GetList(
    ["ID" => "DESC"],
    $arFilter,
    false,
    [
        'nPageSize' => $count,        // Количество элементов на странице
        'iNumPage' => $page,          // Текущая страница
        'checkOutOfRange' => true      // Защита от выхода за пределы диапазона
    ],
    ['ID', 'NAME', 'PROPERTY_ARTNUMBER', 'DATE_CREATE', 'CATALOG_PRICE_1']
);

while ($arItem = $my_elements->GetNext()) {
    $arResult['ITEMS'][] = $arItem;
}

3. Вывод пагинации в HTML

Генерируем ссылки на страницы:

<? if ($arResult['ALL_COUNT'] > $arResult['PAGE_COUNT']) : ?>
    <div class="nav-footer">
        <? 
        $perPage = ceil($arResult['ALL_COUNT'] / $arResult['PAGE_COUNT']);
        for ($i = 1; $i <= $perPage; $i++) : ?>
            <? if ($i != $_REQUEST['page']) : ?>
                <a class="nav-item" href="?page=<?= $i ?>&count=<?= $_REQUEST['count'] ?>&s=<?= $_REQUEST['s'] ?>"><?= $i ?></a>
            <? else : ?>
                <span class="nav-item"><?= $i ?></span>
            <? endif; ?>
        <? endfor; ?>
    </div>
<? endif; ?>

Ключевые моменты

  • nPageSize — количество элементов на странице.

  • iNumPage — текущая страница.

  • checkOutOfRange — предотвращает ошибки при некорректном номере страницы.

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

Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Читайте по теме
Все статьи
Нужен надежный исполнитель?
Разрабатываем сайты, выполняем миграцию на Битрикс, дорабатываем функционал, сопровождаем проекты, а также занимаемся поисковым продвижением и комплексным маркетингом
Получить консультацию
Все статьи