Почему не работает постраничная навигация на D7
Написал компонент для CMS 1C-Битрикс. Компонент создал в новом формате на основе класса, там где вместо файла component.php используется class.php.
Беру инфоблок новости, в котором содержиться 3 новости.
В файле class.php в методе getResult формирую массив данных: список новостей и объект для постраничной навигации.
protected function getResult() {
$arParams = $this->arParams;
$arResult = [];
// если есть request
$year = $this->_request->getQuery("year");
// кеширование
// обновляем данные если запрос отличается от значения кеша
// список вкладок по годам
$res = $this->getYears();
$arResult['YEARS'] = $res['YEARS'];
$uri = new \Bitrix\Main\Web\Uri($this->_request->getRequestUri());
$res["PATH"] = $uri->getPath(); // текущая страница
//SELECT
$arSelect = array("ID", "NAME", "PREVIEW_TEXT", "ACTIVE_FROM","PREVIEW_PICTURE");
// запрос
$arFilter = array(
"IBLOCK_ID" => $arParams["IBLOCK_ID"],
"ACTIVE" => "Y",
);
if($year){
$firstMonth = '01.01.'.$year; //начало года
$lastMonth = '31.12.'.$year; //конец года
$firstMonthTS = ConvertTimeStamp(strtotime($firstMonth),"FULL");
$lastMonthTS = ConvertTimeStamp(strtotime($lastMonth),"FULL");
// запрос
$arFilter['LOGIC'] = 'AND';
$arFilter['>=ACTIVE_FROM'] = $firstMonthTS;
$arFilter['<=ACTIVE_FROM'] = $lastMonthTS;
}
// PAGINATION
$nav = new \Bitrix\Main\UI\PageNavigation("nav-more-news");
$nav->allowAllRecords(true)
->setPageSize($arParams['NEWS_COUNT'])
->initFromUri();
// ELEMENTS LIST
$dbItems = \Bitrix\Iblock\ElementTable::getList(array(
'select' => $arSelect,
'filter' => $arFilter,
'order' => array("ACTIVE_FROM" => 'DESC'),
'offset' => $nav->getOffset(),
'limit' => $nav->getLimit(),
'count_total' => true,
));
$newsCount = $dbItems->getCount();
$nav->setRecordCount($newsCount);
$arResult['NAV'] = $nav;
$arResult['ITEMS'] = array();
while ($arItem = $dbItems->fetch()){
$arItem['ACTIVE_FROM'] = strtolower(FormatDate("Y.m.d", $arItem['ACTIVE_FROM']));
if($arItem["PREVIEW_PICTURE"]){
$arItem["PREVIEW_PICTURE"] = CFile::GetPath($arItem["PREVIEW_PICTURE"]);
}
$arResult['ITEMS'][] = $arItem;
}
$this->arResult = $arResult;
}
public function executeComponent() {
try
{
$this->checkModules();
$this->_request = Application::getInstance()->getContext()->getRequest();
$this->getResult(); // список элементов
$this->includeComponentTemplate();
}
catch (SystemException $e)
{
ShowError($e->getMessage());
}
}
Затем в шаблоне компонента вызываю компонент постраничной навигации bitrix:main.pagenavigation
в который передаю объект навигации - $arResult['NAV'].
$APPLICATION->IncludeComponent(
"bitrix:main.pagenavigation",
"",
array(
"NAV_OBJECT" => $arResult['NAV'],
"SEF_MODE" => "Y",
),
false
);
Ничего не работает! Навигация формирует неверную ссылку такого вида:
test/nav-more-news/page-2/
При том что навигация работала! Возможно я допустил ошибку?