Меню

Bitrix настройки постраничной навигации



Битрикс. Постраничная навигация

Постраничная навигация в Битрикс формируется и выводится с помощью системного компонента 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 — порядковый номер последней статьи на текущей странице

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

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

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

Читайте также:  Настройка биндера для samp врач

Источник

1С-Битрикс. Постраничная навигация для Bitrix\Main\Entity\Query в ORM D7

Пока нет официальной поддержки в ядре я придумал 2 варианта реализации: с опцией SQL_CALC_FOUND_ROWS, с отдельным запросом.

Выбирать данные для примера мы будем конечно из таблицы b_iblock_element (\Bitrix\Iblock\ElementTable);

У меня есть инфоблок с id 24 с 4062 активными элементами. Над ним и будем проводить эксперименты, какой способ быстрее.

Вариант №1 с использованием опции SQL_CALC_FOUND_ROWS

Всё сводится к использованию опции SQL_CALC_FOUND_ROWS в секции SELECT запроса. Говорят, что опция довольно спорная и проседает в скорости, когда элементов много. Если есть подходящие индексы для WHERE и ORDER запроса, то возможно решение с двумя отдельными запросами, будет быстрее, чем один с SQL_CALC_FOUND_ROWS.

Время выполнения 2 sql запросов: 0.02865 s.

Вариант №2 с использованием отдельного запроса с помощью COUNT

Хочу отметить: данный способ поддерживает и группировку.

Время выполнения 2 sql запросов: 0.06029 s.

Выводы

Как видите, в моём случае вариант с опцией SQL_CALC_FOUND_ROWS оказался в 2 раза быстрее. Поэтому выбирайте вариант в зависимости от вашей ситуации.

P.S. Для настройки постраничной навигации придётся поизучать свойства класса CDBResult (/bitrix/modules/main/classes/mysql/database_mysql.php и в официальной документации).

Похожие записи

1С-Битрикс. LazyLoad или ленивая загрузка контента при включенном кешировании

В этой заметке я хочу рассказать о технологии LazyLoad или в простонародье «ленивая загрузка» в Битриксе. Метод, описанный мной, будет точно работать в компонентах catalog.section и news.list.

1C-Битрикс. Кастомизация нового шаблона компонента sale.order.ajax

С выходом нового шаблона компонента sale.order.ajax на форумах битрикса разгораются возмущения и недомения. Мол, теперь код всего шаблона на JavaScript и как его кастомизировать непонятно. На самом деле да, код js-скрипта составляет почти семь тысяч строк. Сходу в таком количестве кода, даже хорошо написанного (к сожалению, битрикс этим не балует), соблюдая паттерны программирования, будет непросто.

В этой заметке я покажу способ, как можно кастомизировать основной скрипт логики шаблона оформления заказа (order_ajax.js), не прибегая к его правке. Что нам это даёт? Когда прилетят очередные обновления шаблона, мы просто заменим его и всё. Все наши кастомизации будут работать (в теории).

1С-Битрикс. Защита от спама в регистрации без капчи

Не редкость, когда боты начинают регистрироваться на сайтах и захламлять списки пользователей своим присутствием. В «1С-Битрикс» можно включить капчу для защиты от спама. Но порой и капча не спасает, да и заставлять пользователей вводить код с капчи, я считаю, не гуманно. Воспользуемся другим трюком.

2 комментария

Теперь можно — https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=43&LESSON_ID=2741

А ещё можно не выводить количество и избавиться от второго запроса (по ссылке раздел «Постраничная навигация без COUNT»)

За SQL_CALC_FOUND_ROWS спасибо! Гораздо быстрее работает чем штатный подсчет в D7.

Источник

Как сделать постраничную навигацию для каталогов товаров(catalog.section.list)

Я был очень удивлен почему для catalog.section можно настраивать постраничную навигацию, а вот для разделов каталога она не предусмотрена 🙁

Читайте также:  Настройка микшера для караоке

У клиента структура каталогов товара такая: основной раздел — коллекции — товары

И таких коллекций может быть очень много.

В итоге эти разделы отображаются по умолчанию вот так:

Это ужасно смотрится и кроме этого, страница с таким количеством картинок будет медленно грузиться. А уж как клиенту весело будет крутить колесико мышки :))

Делаем постраничную навигацию для разделов каталога(catalog.section.list).

Каталоги у нас отображаются с помощью компоненты catalog.section.list. Скопирую шаблон комплексного компонента каталога.

архивируем или скачиваем в безопасное место /bitrix/templates/.default/components/bitrix/catalog/_имя вашего шаблона_/bitrix/catalog.section.list/.default/template.php

открываем /bitrix/templates/.default/components/bitrix/catalog/_имя вашего шаблона_/bitrix/catalog.section.list/.default/template.php

удаляем все до строчки

и вставляем этот код:

Отображение немного изменится потому что я делал для 4 в ряд коллекции, но это Вы сможете без проблем подправить.

Если смущает такой большой код то привожу пример, с помощью которого сможете сами все сделать:

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

В этой папке есть файлы /bitrix/templates/.default/components/bitrix/catalog/_имя_вашего_шаблона_/

В зависимости от внешнего вида компонент используется один из этих файлов.

Нужно в файле найти где подключается компонент catalog.section.list и отключить кеширование вот так:

И теперь у разделов есть постраничная навигация:

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

Источник

Bitrix настройки постраничной навигации

Цитатник веб-разработчиков В тексте курса вы встретите цитаты, высказанные в разное время разработчиками системы и разработчиками проектов на базе Bitrix Framework. Надеемся, что такие неформальные замечания внесут некоторое разнообразие в процесс изучения. Заодно опытные специалисты поделятся и своим опытом.

Имена авторов цитат даются в том написании, в каком авторы зарегистрировали себя на сайте «1С-Битрикс». .

Евгений Смолин: Сам кувыркался с непонятками (пока курсы учебные не прочитал и руками не попробовал то, что там написано). Битрикс из тех систем, где изучение «методом тыка» не очень эффективно без предварительного изучения учебных курсов. Уважаемые новички, потратьте немного своего драгоценного времени, пройдите пару-тройку учебных курсов и масса вопросов просто испарится — там есть ответы на множество вопросов.

Курс для разработчиков — продолжение линейки учебных курсов по Bitrix Framework. Получение сертификата по курсу рекомендуется после успешной сдачи тестов по всей линейке курсов, так как без понятия о работе Контент-менеджера и Администратора создание успешных сайтов будет затруднено.

Чтобы научиться программировать в Bitrix Framework, нет необходимости изучать всю линейку курсов. Но есть моменты, которые необходимо знать разработчикам о системе, они раскрыты в начальных курсах:

  • Интерфейс программы — в главе Элементы управления курса Контент-менеджер.
  • Компоненты 2.0 (начальные сведения) в главе Компоненты 2.0 (начальные сведения) курса Контент-менеджер.
  • Информационные блоки — в главе Информационные блоки (начальные сведения) курса Контент-менеджер.
  • Управление доступом к файлам, элементам контента, модулям и другие права доступа в главе Управление доступом курса Администратор. Базовый.
  • Работа с инструментами системы — в главе Работа с инструментами курса Администратор. Базовый.
  • Модуль Поиск — в главе Поиск курса Администратор. Базовый.
  • Вся информация по администрированию модулей размещена в курсах:
    • Администрирование. Модули — модули «1С-Битрикс: Управление сайтом»
    • Администратор. Бизнес — модули «1С-Битрикс: Управление сайтом», связанные с коммерческой деятельностью в Интернете.
    • Администратор «1С-Битрикс: Корпоративный портал» — модули «1С-Битрикс: Корпоративный портал»

    Как построен курс

    Общепринятая градация квалификации разработчиков в рамках курса обозначает что:

    • Junior сможет создавать простые сайты работая со штатными компонентами и модифицируя их шаблоны.
    • Middle разработчик может работать с API Bitrix Framework.
    • Senior умеет работать над производительностью и безопасностью сайтов, создавать свои модули и компоненты.

    Начальные требования к подготовке

    Для успешного изучения курса и овладения мастерством разработки сайтов на Bitrix Framework необходимо владеть (хотя бы на начальном уровне):

    • основами PHP, баз данных;
    • основами HTML, CSS.

    Тесты

    После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче последовательности тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.

    Комментарии к статьям

    На каждой странице курса авторизованный на сайте посетитель может дать комментарий к содержимому страницы. Комментарий — не форум, там не ведётся обсуждений или разъяснений. Это инструмент для сообщений нам об ошибках, неточностях. Для отправки комментария воспользуйтесь расположенной в правом нижнем углу окна браузера кнопкой:

    Что дальше?

    Одновременно с изучением курса Разработчик Bitrix Framework вам придётся обращаться к информации о других технологиях Bitrix Framework. Эта информация размещена в следующих курсах:

  • Технология Композитный сайт — ускорение работы сайта.
  • Разработка и эксплуатация высоконагруженных проектов — для тех кто делает «тяжёлые» проекты.
  • Бизнес-процессы — настройка и создание бизнес-процессов.
  • Бот платформа Битрикс24 — приложения, основанных на чатах в веб-мессенджере.
  • Маркетплейс Битрикс24 — приложения для коробочной и облачной версий Битрикс24.
  • Маркетплейс Bitrix Framework — расширение функционала проектов на основе Bitrix Framework с помощью сторонних модулей и решений.
  • Многосайтовость — система многосайтовости и принципы работы с многосайтовой конфигурацией.
Читайте также:  Настройка openwrt для билайн

Для преподавания оффлайн

Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 5 дней (40 академических часов).

Если нет интернета

Скачать материалы курса в формате CHM. Файлы формата CHM обновляются ежемесячно, тем не менее, возможно некоторое отставание их от онлайновой версии курса.

Чтобы отключить подобное отношение к файлу необходимо:

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

Отсутствие кнопки Разблокировать возможно в двух случаях:

  1. Файл лежит не локально, а на сетевом ресурсе.
  2. Если файл лежит на локальном диске, но путь к нему содержит спецсимволы (# и прочие).

Источник

Adblock
detector