Пагинация у Bitrix осуществляется у всех компонентов, которые получают однотипные данные из инфоблоков. Но иногда необходимо получить данные из GetList или sql запроса напрямую из базы данных. В документации есть примеры Api для подключения пагинации к произвольной выборке данных. Пагинация для GetList:
<?
CModule::IncludeModule("iblock");
$arSelect = Array("ID", "NAME", "ACTIVE_TO", "DATE_CREATE_UNIX", "TIMESTAMP_X_UNIX",);
$arFilter = Array("IBLOCK_ID"=>DOCUMENT_ITEMS_IBLOCK, "PROPERTY_DEACTIVATE_VALUE" => "Y");
$res = CIBlockElement::GetList(["timestamp_x" => "DESC"], $arFilter, false, Array("nPageSize"=>20), $arSelect);
$navStr = $res->GetPageNavStringEx($navComponentObject, "Страницы:", "template_name");
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
}?>
html код
// вывод шаблона пагинации
<?echo $navStr;?>
Пагинация для Sql запросов:
<?
global $DB;
global $APPLICATION;
$count_items=5; // кол-во записей на странице
$count_total=200; // общее количество записей
// создаем экземпляр класса пагинации
$nav = new \Bitrix\Main\UI\PageNavigation("nav-more-temy");
$nav->allowAllRecords(true)
->setPageSize($count_tema)
->initFromUri();
$strSql = 'SELECT * FROM ttk_hr_mailing WHERE 1‘ ; //
- $nav->getLimit() // лимит записей ($count_items)
- $nav->getOffset() // смещение ($count_items)
$rsData = $DB->Query($strSql, false, $err_mess.__LINE__); // основной запрос
while($el = $rsData->fetch()){
var_dump($el);
} ?>
Далее вызываем setRecordCount(), который учитывает кол-во записей для расчета кол-ва страниц и передаем объект $nav в компонент навигации. Тут можем указать шаблон вывода:
<?
$nav->setRecordCount($count_zap);
$APPLICATION->IncludeComponent("bitrix:main.pagenavigation", "", Array(
"NAV_OBJECT" => $nav,
"SEF_MODE" => "N"
),
false
);
?>
Mike от 27 мая 2022 г.
Lorem Ipsum - это текст-"рыба", часто используемый в печати и вэб-дизайне. Lorem Ipsum является стандартной "рыбой" для текстов на латинице с начала XVI века. В то время некий безымянный печатник создал большую коллекцию размеров и форм шрифтов, используя Lorem Ipsum для распечатки образцов. Lorem Ipsum не только успешно пережил без заметных изменений пять веков, но и перешагнул в электронный дизайн. Его популяризации в новое время послужили публикация листов Letraset с образцами Lorem Ipsum в 60-х годах и, в более недавнее время, программы электронной вёрстки типа Aldus PageMaker, в шаблонах которых используется Lorem Ipsum.Ответить
Jane от 27 мая 2022 г.
answerr messageФильмы от 21 июня 2022 г.
dgfgdfgdfgdfgdfОтветить
Алексей от 21 июня 2022 г.
dfgdfdgfgdfgdfgdДжеки Чан от 21 июня 2022 г.
hfghfhfghfghfghfghfghfghfghОтветить
Квентин Тарантино от 21 июня 2022 г.
etyrtyrtyrtyrtrtyrtyr