Вывод разного количество элементов на разных страницах

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

Представим что на первой странице вместо двух первых элементов у нас выводится какой-то другой блок, а потом уже элементы.

Тогда делаем следующим образом:

  • 1 страница = Блок с информацией на 2 элемента, далее 14 элементов
  • 2 страница = выводим 14 элементов, но первые 2 из них скрываем
  • 3 и последующие страницы = выводим 12 элементов

Перед вызовом компонента (например новостей в index.php) ставим подобное условие:

if((empty($_REQUEST["PAGEN_1"]) || $_REQUEST["PAGEN_1"] == 1) || $_REQUEST["PAGEN_1"] == 2)

    $cntAuctions = 14; // для первой и второй страницы

else

    $cntAuctions = 12; // для остальных

// ... далее вызов компонента новостей и в нем параметры
"NEWS_COUNT" => $cntAuctions,


В шаблоне template.php в цикле по элементам ставим проверку для второй странице подобную этой

foreach($arResult['ITEMS'] as $key => $item)

{

    if($arResult['NAV_RESULT']->NavPageNomer == 2 && ($key == 0 || $key == 1)) // для второй страницы пропускаем первые 2 элемента

        continue;

   

    // вторую страницу можно еще проверять по _REQUEST

    // ... дальше ваш вывод элементов

}

Также мне понадобилось изменить информационную строку в пагинации о кол-ве показываемых элементов, просто в шаблоне пагинации ставим

if($arResult['NavPageNomer'] == 2 )

    $arResult["NavPageSize"] = $arResult["NavPageSize"] - 2;

По мне это гораздо проще, чем все другие возможные варианты. Пользуйтесь :)


Возврат к списку