+7 (987) 026-06-36
Написать в Telegram

Оставить заявку
stanislav_web

Шаблон для пагинации элементов system.pagenavigation в 1С-Битрикс

Шаблон для пагинации элементов system.pagenavigation в 1С-Битрикс Упрощённый и легко редактируемый шаблон битрикса для пагинации в списке элементов news.list или catalog.section с цифрами, стрелками и многоточием

Шаблон для пагинации элементов system.pagenavigation в 1С-Битрикс

Упрощённый и легко редактируемый шаблон битрикса для пагинации в списке элементов news.list или catalog.section с цифрами, стрелками и многоточием

📅 09 апреля 2023

👁‍🗨 544

🔥 0

Шаблон для пагинации элементов system.pagenavigation в 1С-Битрикс

Стандартные шаблоны от 1С-Битрикс новичкам порой доставляют много неудобств, ведь нужно понимать всю логику и хорошо знать PHP. Для этого я перебрал стандартный шаблон пагинации и расставил всё по полочкам, чтобы было удобно внедрять в другие проекты.

<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
/**
* @var array $arResult
* @var array $arParam
* @var CBitrixComponentTemplate $this
*/
$this->setFrameMode(true);
?>
<? if (!$arResult['NavShowAlways']) { ?>
	<? if ($arResult['NavRecordCount'] == 0 || ($arResult['NavPageCount'] == 1 && $arResult['NavShowAll'] == false)) return; ?>
<? } ?>
<div class="pagination">
	<?
	$strNavQueryString = ($arResult['NavQueryString'] != "" ? $arResult['NavQueryString'] . "&amp;" : "");
	$strNavQueryStringFull = ($arResult['NavQueryString'] != "" ? "?".$arResult['NavQueryString'] : "");
	?>
	<? if ($arResult['NavPageNomer'] > 1) { ?>
		<? if ($arResult['nStartPage'] > 1) { ?>
			<? if ($arResult['bSavePage']) { ?>
				<a class="page-link 1" href="<?= $arResult['sUrlPath']; ?>?<?= $strNavQueryString; ?>PAGEN_<?= $arResult['NavNum']; ?>=1">1</a>
			<? } else { ?>
				<a href="<?= $arResult['sUrlPath']; ?><?= $strNavQueryStringFull?>">1</a>
			<? } ?>
			<? if ($arResult['nStartPage'] > 2) { ?>
				<a href="<?= $arResult['sUrlPath']; ?>?<?= $strNavQueryString; ?>PAGEN_<?= $arResult['NavNum']; ?>=<?= round($arResult['nStartPage'] / 2)?>">...</a>
			<? } ?>
		<? } ?>
	<? } ?>
	<? do { ?>
		<? if ($arResult['nStartPage'] == $arResult['NavPageNomer']) { ?>
			<a href="javascript:void(0);" class="active"><?= $arResult['nStartPage']; ?></a>
		<? } else if ($arResult['nStartPage'] == 1 && $arResult['bSavePage'] == false) { ?>
			<a href="<?= $arResult['sUrlPath']; ?><?= $strNavQueryStringFull?>"><?= $arResult['nStartPage']; ?></a>
		<? } else { ?>
			<a href="<?= $arResult['sUrlPath']; ?>?<?= $strNavQueryString; ?>PAGEN_<?= $arResult['NavNum']; ?>=<?= $arResult['nStartPage']; ?>"><?= $arResult['nStartPage']; ?></a>
		<? } ?>
		<? $arResult['nStartPage']++; ?>
	<? } while($arResult['nStartPage'] <= $arResult['nEndPage']); ?>
	<? if ($arResult['NavPageNomer'] < $arResult['NavPageCount']) { ?>
		<? if ($arResult['nEndPage'] < $arResult['NavPageCount']) { ?>
			<? if ($arResult['nEndPage'] < ($arResult['NavPageCount'] - 1)) { ?>
				<a href="<?= $arResult['sUrlPath']; ?>?<?= $strNavQueryString; ?>PAGEN_<?= $arResult['NavNum']; ?>=<?= round($arResult['nEndPage'] + ($arResult['NavPageCount'] - $arResult['nEndPage']) / 2)?>">...</a>
			<? } ?>
			<a href="<?= $arResult['sUrlPath']; ?>?<?= $strNavQueryString; ?>PAGEN_<?= $arResult['NavNum']; ?>=<?= $arResult['NavPageCount']; ?>"><?= $arResult['NavPageCount']; ?></a>
		<? } ?>
	<? } ?>
	<? if ($arResult['NavPageNomer'] > 1) { ?>
		<? if ($arResult['bSavePage']) { ?>
			<a class="page-link 8" href="<?= $arResult['sUrlPath']; ?>?<?= $strNavQueryString; ?>PAGEN_<?= $arResult['NavNum']; ?>=<?=($arResult['NavPageNomer']-1)?>">
				<?=GetMessage("MAIN_UI_PAGINATION__PREV")?>
			</a>
		<? } else { ?>
			<? if ($arResult['NavPageNomer'] > 2) { ?>
				<a class="prev" href="<?= $arResult['sUrlPath']; ?>?<?= $strNavQueryString; ?>PAGEN_<?= $arResult['NavNum']; ?>=<?=($arResult['NavPageNomer']-1)?>">
					<img src="<?=SITE_TEMPLATE_PATH?>/files/icons/arrow.svg">
				</a>
			<? } else { ?>
				<a class="prev" href="<?= $arResult['sUrlPath']; ?><?= $strNavQueryStringFull?>">
					<img src="<?=SITE_TEMPLATE_PATH?>/files/icons/arrow.svg">
				</a>
			<? } ?>
		<? } ?>
	<? } ?>
	<? if ($arResult['bShowAll']) { ?>
		<? if ($arResult['NavShowAll']) { ?>
			<a class="page-link 11" href="<?= $arResult['sUrlPath']; ?>?<?= $strNavQueryString; ?>SHOWALL_<?= $arResult['NavNum']; ?>=0">
				<?=GetMessage("MAIN_UI_PAGINATION__PAGED")?>
			</a>
		<? } else { ?>
			<a class="page-link 12" href="<?= $arResult['sUrlPath']; ?>?<?= $strNavQueryString; ?>SHOWALL_<?= $arResult['NavNum']; ?>=1">
				<?=GetMessage("MAIN_UI_PAGINATION__ALL")?>
			</a>
		<? } ?>
	<? } ?>
	<? if ($arResult['NavPageNomer'] < $arResult['NavPageCount']) { ?>
		<a class="next" href="<?= $arResult['sUrlPath']; ?>?<?= $strNavQueryString; ?>PAGEN_<?= $arResult['NavNum']; ?>=<?=($arResult['NavPageNomer']+1)?>">
			<img src="<?=SITE_TEMPLATE_PATH?>/files/icons/arrow.svg">
		</a>
	<? } ?>
</div>