Как подключить пагинацию в своем шаблоне стандартного компонента?

Для подключения пагинации в своем шаблоне стандартного компонента в "1C-Bitrix" следуйте следующим шагам:

1. Создайте новый файл с расширением ".php" в папке вашего шаблона компонента. Например, создайте файл "pagination.php".

2. В новом файле "pagination.php" необходимо добавить следующий код для инициализации и отображения пагинации:

<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die();
}

if ($arResult["NavPageCount"] > 1) {
    $arResult["nStartPage"] = $arResult["NavPageCount"] - 4;
    $arResult["nEndPage"] = $arResult["NavPageCount"];

    if ($arResult["nStartPage"] < 1) {
        $arResult["nStartPage"] = 1;
    }

    if ($arResult["NavPageNomer"] > 1) {
        $arResult["sPrevHref"] = $arResult["sUrlPath"] . "?PAGEN_" . $arResult["NavNum"] . "=" . ($arResult["NavPageNomer"] - 1);
    }

    if ($arResult["NavPageNomer"] < $arResult["NavPageCount"]) {
        $arResult["sNextHref"] = $arResult["sUrlPath"] . "?PAGEN_" . $arResult["NavNum"] . "=" . ($arResult["NavPageNomer"] + 1);
    }

    $arResult["sFirstHref"] = $arResult["sUrlPath"];
    $arResult["sLastHref"] = $arResult["sUrlPath"] . "?PAGEN_" . $arResult["NavNum"] . "=" . $arResult["NavPageCount"];
}

$this->SetViewTarget('pagination');

$APPLICATION->IncludeComponent(
    "bitrix:system.pagenavigation",
    "",
    array(
        "NAV_RESULT" => $arResult["NavResult"],
        "NAV_PAGE_COUNT" => $arResult["NavPageCount"],
        "NAV_PAGE_SIZE" => $arResult["NavPageSize"],
        "NAV_SHOW_ALWAYS" => "N",
        "NAV_TEMPLATE" => "",
        "NAV_SHOW_ALL" => "N",
    ),
    false
);

$arResult["sNavText"] = ob_get_clean();

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

3. В файле шаблона компонента добавьте следующий код для подключения файла "pagination.php" и отображения пагинации:

<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die();
}

if (!empty($arResult["Nav"])) {
    $this->__component->__template->SetViewTarget('pagination');
    include($_SERVER['DOCUMENT_ROOT'] . $templateFolder . "/pagination.php");
    $paginationHtml = $arResult["sNavText"];
    $this->__component->__template->EndViewTarget();

    echo "<div class="pagination">" . $paginationHtml . "</div>";
}
?>

В этом коде мы проверяем, существует ли переменная $arResult["Nav"], которая содержит информацию о пагинации. Если эта переменная не пуста, мы подключаем файл "pagination.php" и выводим пагинацию на странице.

4. В вашем шаблоне компонента, где вы хотите отобразить пагинацию, добавьте следующий код:

<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die();
}

if ($arResult["NavPageCount"] > 1) {
    $APPLICATION->ShowViewContent('pagination');
}
?>

В этом коде мы проверяем, если количество страниц больше одной, то отображаем содержимое вьюхи "pagination", которую мы определили в шаблоне компонента ранее.

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