[spoiler]
Для создания своего шаблона скопируем системный шаблон постраничной навигации (/bitrix/components/bitrix/system.pagenavigation/templates/.default) в шаблон демо-сайта (/bitrix/templates/three_columns/components/bitrix/system.pagenavigation/.default).
Далее добавим Javascript-код, который будет обрабатывать нажатие на клавиши, в файл script.js:
document.onkeydown = PageNavigation; function PageNavigation (event) { if (!document.getElementById) return; if (window.event) event = window.event; if (event.ctrlKey) { var key = (event.keyCode ? event.keyCode : (event.which ? event.which : null) ); if (!key) return; var link = null; if (key == 37) link = document.getElementById('next_page'); else if (key == 39) link = document.getElementById('previous_page'); if (link && link.href) document.location = link.href; } } |
В шаблоне (template.php) для ссылок "следующая" и "предыдущая" добавим идентификаторы "previous_page" и "next_page" соответственно, а также немного изменим форматирование ссылок с помощью каскадных стилей:
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); if(!$arResult["NavShowAlways"]) { if ($arResult["NavRecordCount"] == 0 || ($arResult["NavPageCount"] == 1 && $arResult["NavShowAll"] == false)) return; } $strNavQueryString = ($arResult["NavQueryString"] != "" ? $arResult["NavQueryString"]."&" : ""); $strNavQueryStringFull = ($arResult["NavQueryString"] != "" ? "?".$arResult["NavQueryString"] : ""); ?> <div class="navigation-yandex-style"> <?if($arResult["bDescPageNumbering"] === true):?> <b><?=GetMessage("nav_pages")?></b> <?if ($arResult["NavPageNomer"] < $arResult["NavPageCount"]):?> <span class="arrow">←</span><span class="ctrl"><script type="text/javascript">document.write(" Ctrl");</script></span> <?if($arResult["bSavePage"]):?> <a href="<?=$arResult["sUrlPath"]?>?<?=$strNavQueryString?>PAGEN_<?=$arResult["NavNum"]?>=<?=($arResult["NavPageNomer"]+1)?>" id="next_page"><?=GetMessage("nav_prev")?></a> <?else:?> <?if ($arResult["NavPageCount"] == ($arResult["NavPageNomer"]+1) ):?> <a href="<?=$arResult["sUrlPath"]?><?=$strNavQueryStringFull?>" id="next_page"><?=GetMessage("nav_prev")?></a> <?else:?> <a href="<?=$arResult["sUrlPath"]?>?<?=$strNavQueryString?>PAGEN_<?=$arResult["NavNum"]?>=<?=($arResult["NavPageNomer"]+1)?>" id="next_page"><?=GetMessage("nav_prev")?></a> <?endif?> <?endif?> <?else:?> <span class="disabled"><span class="arrow">←</span> <span class="ctrl"><script type="text/javascript">document.write(" Ctrl");</script></span> <?=GetMessage("nav_prev")?></span> <?endif?> <?if ($arResult["NavPageNomer"] > 1):?> <a href="<?=$arResult["sUrlPath"]?>?<?=$strNavQueryString?>PAGEN_<?=$arResult["NavNum"]?>=<?=($arResult["NavPageNomer"]-1)?>" id="previous_page"><?=GetMessage("nav_next")?></a> <span class="ctrl"><script type="text/javascript">document.write(" Ctrl");</script></span><span class="arrow">→</span> <?else:?> <span class="disabled"><?=GetMessage("nav_next")?> <span class="ctrl"><script type="text/javascript">document.write("Ctrl ");</script></span><span class="arrow">→</span></span> <?endif?> <br /> <?while($arResult["nStartPage"] >= $arResult["nEndPage"]):?> <?$NavRecordGroupPrint = $arResult["NavPageCount"] - $arResult["nStartPage"] + 1;?> <?if ($arResult["nStartPage"] == $arResult["NavPageNomer"]):?> <span class="nav-current-page"><?=$NavRecordGroupPrint?></span> <?elseif($arResult["nStartPage"] == $arResult["NavPageCount"] && $arResult["bSavePage"] == false):?> <a href="<?=$arResult["sUrlPath"]?><?=$strNavQueryStringFull?>"><?=$NavRecordGroupPrint?></a> <?else:?> <a href="<?=$arResult["sUrlPath"]?>?<?=$strNavQueryString?>PAGEN_<?=$arResult["NavNum"]?>=<?=$arResult["nStartPage"]?>"><?=$NavRecordGroupPrint?></a> <?endif?> <?$arResult["nStartPage"]--?> <?endwhile?> <?else:?> <b><?=GetMessage("nav_pages")?></b> <?if ($arResult["NavPageNomer"] > 1):?> <span class="arrow">←</span><span class="ctrl"><script type="text/javascript">document.write(" Ctrl");</script></span> <?if($arResult["bSavePage"]):?> <a href="<?=$arResult["sUrlPath"]?>?<?=$strNavQueryString?>PAGEN_<?=$arResult["NavNum"]?>=<?=($arResult["NavPageNomer"]-1)?>" id="next_page"><?=GetMessage("nav_prev")?></a> <?else:?> <?if ($arResult["NavPageNomer"] > 2):?> <a href="<?=$arResult["sUrlPath"]?>?<?=$strNavQueryString?>PAGEN_<?=$arResult["NavNum"]?>=<?=($arResult["NavPageNomer"]-1)?>" id="next_page"><?=GetMessage("nav_prev")?></a> <?else:?> <a href="<?=$arResult["sUrlPath"]?><?=$strNavQueryStringFull?>" id="next_page"><?=GetMessage("nav_prev")?></a> <?endif?> <?endif?> <?else:?> <span class="disabled"><span class="arrow">←</span> <span class="ctrl"><script type="text/javascript">document.write(" Ctrl");</script></span> <?=GetMessage("nav_prev")?></span> <?endif?> <?if($arResult["NavPageNomer"] < $arResult["NavPageCount"]):?> <a href="<?=$arResult["sUrlPath"]?>?<?=$strNavQueryString?>PAGEN_<?=$arResult["NavNum"]?>=<?=($arResult["NavPageNomer"]+1)?>" id="previous_page"><?=GetMessage("nav_next")?></a> <span class="ctrl"><script type="text/javascript">document.write(" Ctrl");</script></span><span class="arrow">→</span> <?else:?> <span class="disabled"><?=GetMessage("nav_next")?> <span class="ctrl"><script type="text/javascript">document.write("Ctrl ");</script></span><span class="arrow">→</span></span> <?endif?> <br /> <?while($arResult["nStartPage"] <= $arResult["nEndPage"]):?> <?if ($arResult["nStartPage"] == $arResult["NavPageNomer"]):?> <span class="nav-current-page"><?=$arResult["nStartPage"]?></span> <?elseif($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> <?endif?> <?$arResult["nStartPage"]++?> <?endwhile?> <?endif?> </div> |
CSS шаблона (style.css):
div.navigation-yandex-style { font-size:125%; line-height:200%; } div.navigation-yandex-style a { text-decoration:underline; padding:0.2em 0.3em; } span.nav-current-page { background-color:#e8e9ec; padding:0.2em 0.3em; } div.navigation-yandex-style span.disabled { color:#999; } div.navigation-yandex-style span.arrow { font-size:100%; font-family:Times; } div.navigation-yandex-style span.ctrl { font-size:68%; } |
Также в языковых файлах шаблона (lang/template.php) добавим сообщение "Страницы":
$MESS["nav_pages"]="Страницы"; |
и изменим сообщения "Пред.", "След." на "предыдущая", "следующая" соответственно.
Результат:
Т.е. делаю CIBlockElement::GetList и хочу выводить навигацию в своем стиле, причем в 3-4-х вариантах, на разных разделах сайта (т.е. одного .default мало). Компонент system.pagenavigation входящих параметров не имеет....
1| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | … | 114
Все сделал, как написано и вместо стрелочек с двух сторон: <---- Ctrl и Ctrl ---->
Отображает вот так: < Ctrl Ctrl >
То есть, нет стрелок с двух сторон, а рисуются только знаки: < и >
Почему так не скажите? И как исправить?
&larr ; - левая стрелка //убрать пробел перед точкой с запятой
&rarr ; - правая стрелка //убрать пробел перед точкой с запятой