Удобный компонент пагинации для интеграции верстки - alma-com/wiki-bitrix GitHub Wiki

Стандартный компонент пагинации system.pagenavigation очень сложно понять и еще сложней интегрировать верстку. Пример кода для более комфортной интеграции верстки:

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
/** @var array $arParams */
/** @var array $arResult */
/** @global CMain $APPLICATION */
/** @global CUser $USER */
/** @global CDatabase $DB */
/** @var CBitrixComponentTemplate $this */
/** @var string $templateName */
/** @var string $templateFile */
/** @var string $templateFolder */
/** @var string $componentPath */
/** @var CBitrixComponent $component */
$this->setFrameMode(true);

if(!$arResult["NavShowAlways"])
{
    if ($arResult["NavRecordCount"] == 0 || ($arResult["NavPageCount"] == 1 && $arResult["NavShowAll"] == false))
    return;
}

$strNavQueryString = ($arResult["NavQueryString"] != "" ? $arResult["NavQueryString"]."&" : "");
$strNavQueryStringFull = ($arResult["NavQueryString"] != "" ? "?".$arResult["NavQueryString"] : "");

$moveUrl = function ($shift = 0) use ($arResult, $strNavQueryString, $strNavQueryStringFull)
{
  $pageNum = $arResult["NavPageNomer"] + $shift;
  $result = $arResult["sUrlPath"] . '?' . $strNavQueryString . 'PAGEN_' . $arResult["NavNum"] . '=' . $pageNum;

  if($pageNum < 2 && $strNavQueryStringFull) {
    $result = $arResult["sUrlPath"] . $strNavQueryStringFull;
  }

  if($pageNum < 2 && !$strNavQueryStringFull) {
    $result = $arResult["sUrlPath"];
  }

  return $result;
};
?>



<div class="pagination">

  <!-- Prev -->
  <?if($arResult["NavPageNomer"] > 1):?>
    <a href="<?=$moveUrl(-1)?>" class="pagination__prev"></a>
  <?else:?>
    <span class="pagination__prev"></span>
  <?endif?>
  <!-- End Prev -->

  <!-- Dots -->
  <?if($arResult["nStartPage"] > 1):?>
    <a href="<?=$moveUrl(1 - $arResult["NavPageNomer"])?>" class="pagination__page">1</a>

    <?if($arResult["nStartPage"] == 3):?>
      <a href="<?=$moveUrl(2 - $arResult["NavPageNomer"])?>" class="pagination__page">2</a>
    <?endif?>

    <?if($arResult["nStartPage"] > 3):?>
      <span class="pagination__page">...</span>
    <?endif?>
  <?endif?>
  <!-- End Dots -->

  <!-- Pages -->
  <?while($arResult["nStartPage"] <= $arResult["nEndPage"]):?>
    <? $shift = $arResult["nStartPage"] - $arResult["NavPageNomer"]; ?>

    <?if ($arResult["nStartPage"] != $arResult["NavPageNomer"]):?>
      <a href="<?=$moveUrl($shift)?>" class="pagination__page"><?=$arResult["nStartPage"]?></a>
    <?else:?>
      <span class="pagination__page pagination__page--active"><?=$arResult["nStartPage"]?></span>
    <?endif?>

    <?$arResult["nStartPage"]++?>
  <?endwhile?>
  <!-- End Pages -->

  <!-- Dots -->
  <?if($arResult["NavPageCount"] > $arResult["nEndPage"]):?>
    <?if($arResult["NavPageCount"] - $arResult["nEndPage"] > 3):?>
      <a href="<?=$moveUrl($arResult["nStartPage"] - $arResult["NavPageNomer"])?>" class="pagination__page">
        <?=$arResult["nEndPage"] + 1?>
      </a>
    <?endif?>

    <?if($arResult["NavPageCount"] - $arResult["nEndPage"] > 2):?>
      <span class="pagination__page">...</span>
    <?endif?>

    <a href="<?=$moveUrl($arResult["NavPageCount"] - $arResult["NavPageNomer"])?>" class="pagination__page">
      <?=$arResult["NavPageCount"]?>
    </a>
  <?endif?>
  <!-- End Dots -->

  <!-- Next -->
  <?if($arResult["NavPageNomer"] < $arResult["NavPageCount"]):?>
    <a href="<?=$moveUrl(1)?>" class="pagination__next"></a>
  <?else:?>
    <span class="pagination__next"></span>
  <?endif?>
  <!--End  Next -->
</div>
⚠️ **GitHub.com Fallback** ⚠️