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