До недавнего времени меня вводила в недоумение постраничная навигация. Нигде в документации не описано, как поменять шаблон для неё! Но, если руки растут из того места, то во всём можно разобраться самому. А чтобы другим не пришлось тратить на это время, я решил написать эту заметку
[spoiler]
Что было? Что будет?
И так, начнём! Что же мы имеем в начале?

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

Тире между числами в интервале, красивая навигация…
За работу!
Для исправления нужно-то всего ничего — поменять шаблон компонента bitrix:system.pagenavigation. Этот компонент не описан в документации, его не в визуальном редакторе. Он «системный»
Приведу, без лишних разговоров, код исправленного мною шаблона (который нужно положить, конечно же, в /bitrix/templates/components/bitrix/system.pagenavigation/.default, если Вы хотите, чтобы он по умолчанию работал на сайте).
template.php:
style.css:
Удачного изучения недокументированных компонентов!
[spoiler]Что было? Что будет?
И так, начнём! Что же мы имеем в начале?

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

Тире между числами в интервале, красивая навигация…

За работу!
Для исправления нужно-то всего ничего — поменять шаблон компонента bitrix:system.pagenavigation. Этот компонент не описан в документации, его не в визуальном редакторе. Он «системный»

Приведу, без лишних разговоров, код исправленного мною шаблона (который нужно положить, конечно же, в /bitrix/templates/components/bitrix/system.pagenavigation/.default, если Вы хотите, чтобы он по умолчанию работал на сайте).
template.php:
<?php
if (!defined('B_PROLOG_INCLUDED') || (B_PROLOG_INCLUDED !== true)) {
die();
}
if (!$arResult["NavShowAlways"]) {
if (
(0 == $arResult["NavRecordCount"])
||
((1 == $arResult["NavPageCount"]) && (false == $arResult["NavShowAll"]))
) {
return;
}
}
$navQueryString = ($arResult["NavQueryString"] != "" ? $arResult["NavQueryString"]."&" : "");
$navQueryStringFull = ($arResult["NavQueryString"] != "" ? "?".$arResult["NavQueryString"] : "");
?>
<div class="pagenavigation">
<div>
<?php echo $arResult["NavTitle"] ?>
<?php echo $arResult["NavFirstRecordShow"] ?>—<?php echo $arResult["NavLastRecordShow"] ?> из <?php echo $arResult["NavRecordCount"] ?>
</div>
<div class="numbers">
<?php while ($arResult["nStartPage"] <= $arResult["nEndPage"]) { ?>
<?php if ($arResult["nStartPage"] == $arResult["NavPageNomer"]) { ?>
<span class="active"><?php echo $arResult["nStartPage"] ?></span>
<?php } elseif ((1 == $arResult["nStartPage"]) && (false == $arResult["bSavePage"])) { ?>
<a href="<?php echo $arResult["sUrlPath"] ?><?php echo $navQueryStringFull ?>"><?php echo $arResult["nStartPage"] ?></a>
<?php } else { ?>
<a href="<?php echo $arResult["sUrlPath"] ?>?<?php echo $navQueryString ?>PAGEN_<?php echo $arResult["NavNum"] ?>=<?php echo $arResult["nStartPage"] ?>"><?php echo $arResult["nStartPage"] ?></a>
<?php } ?>
<?php $arResult["nStartPage"]++ ?>
<?php } ?>
</div>
</div> |
style.css:
@CHARSET "UTF-8";
.pagenavigation span.active, .pagenavigation a {
padding: 0.2em 0.3em;
}
.pagenavigation span.active {
background: #E5E5D8;
}
.pagenavigation .numbers {
font-size: 1.2em;
margin: 0.3em 0;
} |
Удачного изучения недокументированных компонентов!
