ciblockelement getlist постраничная навигация

Постраничная навигация в Битрикс формируется и выводится с помощью системного компонента bitrix:system.pagenavigation . Компонент разработан для использования совместно с другими компонентами и тесно связан с ними. Посмотрим, как можно использовать этот компонент для постраничного вывода списка элементов инфоблока.

Системный компонент bitrix:system.pagenavigation

Шаблон .default откровенно кошмарный, так что есть смысл использовать modern или round :

Метод CDBResult::GetPageNavString()

Можно упростить наш код, используя метод GetPageNavString класса CDBResult :

Как нетрудно догадаться, внутри метода GetPageNavString() идет подключение системного компонента bitrix:system.pagenavigation и весь вывод компонента записывается в буфер. В предыдущем примере мы делали это сами, а теперь просто вызываем метод GetPageNavString() .

Метод CDBResult::NavStart()

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

Теперь добавим постраничную навигацию с помощью CAllDBResult::NavStart() :

Метод разбивает результат выборки на страницы. После вызова этого метода, методы

  • CDBResult::Fetch()
  • CDBResult::GetNext()
  • CDBResult::ExtractFields()
  • CDBResult::NavNext()

будут ограничены только текущей страницей (а не всей выборкой).

Постраничная навигация в компонентах

Добавить параметры постраничной навигации на страницу настройки компонента:

Постраничная навигация в коде компонента:

Свой шаблон постраничной навигации

Чтобы кастомизировать постраничную навигацию, надо скопировать один из шаблонов системного компонента system.pagenavigation . Все содержимое папки modern копируем в папку pager :

Удаляем файл стилей style.min.css и создаем файл .description.php :

И теперь нам надо отредактировать файл template.php . Распечатаем массив $arResult с помощью функции print_r() :

В нашем случае показывается список из 11 статей, по две статьи на страницу. Всего получается 6 страниц, но на последней странице только одна статья.

  • NavShowAlways — всегда показывать постраничную навигацию
  • NavTitle — название списка элементов, например «Статьи» или «Новости»
  • NavRecordCount — общее количество статей (записей)
  • NavPageCount — общее количество страниц
  • NavPageNomer — номер текущей страницы
  • NavPageSize — количество статей на одну страницу
  • bShowAll — разрешено или нет показывать ссылку «Все статьи»
  • NavShowAll — равен true , если показываются все статьи, без постраничной навигации
  • NavNum — номер постраничной навигации ( PAGEN_1 , PAGEN_2 , …)
  • bDescPageNumbering — использовать или нет обратную постраничную навигацию
  • nPageWindow — количество страниц, которые отображаются в постраничной навигации
  • bSavePage — равна true если в главном модуле отмечена опция «Запоминать последнюю открытую страницу»
  • sUrlPath — путь к странице относительно корня
  • NavQueryString — строка GET-параметров
  • nStartPage — номер первой страницы слева для текущей страницы
  • nEndPage — номер первой страница справа для текущей страницы
  • NavFirstRecordShow — порядковый номер первой статьи на текущей странице
  • NavLastRecordShow — порядковый номер последней статьи на текущей странице
Читайте также:  echd user2 mos ru войти

По поводу переменной bSavePage :

По поводу переменных nStartPage и nEndPage . Если текущая страница — третья ( NavPageNomer=3 ), а показывается пять ссылок ( nPageWindow=5 ), тогда nStartPage=1 , а nEndPage=5 :

Если текущая страница — четвертая ( NavPageNomer=4 ), а показывается пять ссылок ( nPageWindow=5 ), тогда nStartPage=2 , а nEndPage=6 :


В системе Bitrix постраничная навигация реализована с помощью компонента system.pagenavigation. Постраничная навигация используется в различных компонентах при выводе каталога, новостной ленты, статей и прочей информации.

Рассмотрим пример вызова постраничной навигации из компонента посредством метода CMain::GetPageNavStringEx, реализованным в возвращаемым методом CIBlockElement::GetList объекте типа CIBlockResult.

Пример из компонентов 2.0:

Таким образом, переменной $arResult[«NAV_STRING»] будет присвоен результат работы компонента bitrix:system.pagenavigation, с шаблоном $arParams[«PAGER_TEMPLATE»]. Если переменная $arParams[«PAGER_TEMPLATE»] пуста, то имя по умолчанию имя шаблона равно .default.

Теперь зададим кол-во выводимых кнопок-страниц постраничной навигации. Для этого перед вызовом метода GetPageNavStringEx (см. пример выше) надо задать свойство nPageWindow:

После чего кол-во будет равным значению, которое вы указали.

Данный код поможет понять как разбить элементы инфоблока по разным страницам.

Битрикс API — разбиваем элементы для AJAX и других скриптов

Рассмотрим код который нам нужно указать как 4-ый параметр.

и разберем каждый:
nTopCount — ограничивает количество (можно не указывать, можно задать как false на всякий случай)
nPageSize — количество элементов на странице
iNumPage — текущая страница
checkOutOfRange — а вот теперь самое интересное �� Этого параметра вы не найдете в документации на сайте битрикс (на момент написания статьи). НО — без него ваш цикл будет крутиться бесконечно долго, даже когда «страницы» закончаться.

При помощи этого можно делать — аякс загрузку «показать еще», последовательный проход по всем элементам, вывод товаров на разных страницах и много чего другого. И всё это без всяких if, else, break, continue и т.д. ��

Читайте также:  hp pavilion g7 1153er

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

Какие услуги предоставляю:
— Создание сайтов, шаблонов и компонентов на 1С-Битрикс;
— Разработка функционала с нуля и доработка кода на уже созданных проектах;
— Адаптивная вёрстка макетов и натяжка на Битрикс;
— Парсинг файлов и выгрузка на сайт (форматы — CSV, XML, XLSX, JSON)
— Интеграции со сторонними сервисами по API;
— Многоязычные версии и многое другое.

Оцените статью
Добавить комментарий

Adblock detector