Задать вопрос
lamer350
@lamer350
กำลังสูงสุด

Bitrix, как для постраничной навигации задать кастомное количество новостей?

Есть страница новостей, на ней изначально (на 1 странице получается) выводится 4 новости (особенности дизайна, 3 колонки + 1 новость во всю ширину), далее с помощью ajax подгружаю по 6 новостей. (2 ряда х 3 колонки).

Но при таком раскладе теряются 2 новости, так как вторая страница получается с 7й новости.
Как можно скорректировать значения чтобы в постраничной навигации, при расчете индексов новостей которые нужно вывести на этой странице, применялась поправка на -2 индекса? и вместо с 7 по 12 брались с 5 по 10?
  • Вопрос задан
  • 1162 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
@kudis
Bitrix developer
Стандартным news.list - это не решить
можете написать свой компонент. вот основа:
CModule::IncludeModule("iblock");

$arSelect = [
    'ID',
    'NAME',
];

$arFilter = [
    'IBLOCK_CODE' => 'news',
];

if ($_REQUEST['PAGEN_1'] > 1) {
    $arNavStartParams = [
        'iNumPage' => $_REQUEST['PAGEN_1'] - 1,
        'nPageSize' => 6,
    ];
    $arFilter['!ID'] = [1, 2, 3, 4]; // TODO: получить эти данные в запросе и закешировать
} else {
    $arNavStartParams = [
        'nTopCount' => 0,
        'iNumPage' => 1,
        'nPageSize' => 10,
    ];
}

$obFields = CIBlockElement::GetList(
        ['ID' => 'asc'],
        $arFilter,
        false,
        $arNavStartParams,
        $arSelect
);

$arCurrentData = [];

while($arField = $obFields->Fetch()) {
    print_r($arField);
}


Обратите внимание на TODO - это id первых 4-х новостей - их получайте из этого же компонента, показывающего 1-ю страницу
начиная со второй страницы мы делаем, некий, offset, запрещая показывать уже выведенные новости в 1-й четвёрке и сдвигая пагинатор.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы