Для вывода пагинации в bitrix для прямых sql запросов базе данных нам потребуется следующий код.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<?php //фукнция для запроса количества записей function getCountAll(){ global $DB; $where_str=''; $strSql = 'SELECT count(*) as c FROM b_sonet_log '.$where_str; $rsData = $DB->Query($strSql, false, $err_mess.__LINE__); $el = $rsData->fetch(); return $el['c']; } function ShowAllPostyTemy( ){ global $DB; global $APPLICATION; //пагинация $count_tema=5 // выводим по 5 Записей на страницу //создаем объект пагинации $nav = new \Bitrix\Main\UI\PageNavigation("nav-more-temy"); $nav->allowAllRecords(true) ->setPageSize($count_tema) ->initFromUri(); $sort_str=''; $where_str=''; $count_zap=getCountAll(); // сделать запрос для определения количества всех строк // в sql вставляем limit и Offset $strSql = 'SELECT * FROM b_sonet_log '.$where_str.' '.$sort_str.' LIMIT '.$nav->getLimit().' OFFSET '.$nav->getOffset() ; // $rsData = $DB->Query($strSql, false, $err_mess.__LINE__); while($el = $rsData->fetch()){ print_r($el); } $nav->setRecordCount($count_zap); $APPLICATION->IncludeComponent("bitrix:main.pagenavigation", "", Array( "NAV_OBJECT" => $nav, "SEF_MODE" => "N" ), false ); } |
Из важных моментов.
1. создали $nav — объект навигации и пагинации
2. Подсчитали количество строк в запросе функцией getCountAll
3. строке sql ($strSql) выставлили limit Offset /
4. Вывели все что что можно через fetch
5. вывели пагинацию через компоненту $APPLICATION->IncludeComponent , передав в нее объект пагинации