Удобный компонент пагинации для интеграции верстки - 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>