Добрый день. В Битриксе совсем ещё новичок.
Потребовалось заменить стандартный вывод поиска кнопкой "показать ещё". Готовое решение приобрести возможности нет, закончилась т/п. Собственно, нагуглив, разместил такой шаблон в /bitrix/templates/.default/components/bitrix/system.pagenavigation:
В result_modifier.php шаблона Bitrix:search.page добавил код на сброс буфера страницы:
И в шаблон компонента:
В конце в скрипты шаблона сайта добавил JS-код:
Но в результате пагинация отрабатывается стандартная. Подскажите, вообще можно ли реализовать этот функционал без загрузки готового решения из магазина, или напрасный труд? И правильно ли я размещал коды?
Потребовалось заменить стандартный вывод поиска кнопкой "показать ещё". Готовое решение приобрести возможности нет, закончилась т/п. Собственно, нагуглив, разместил такой шаблон в /bitrix/templates/.default/components/bitrix/system.pagenavigation:
| Код |
|---|
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
$this->setFrameMode(true);
if (!$arResult["NavShowAlways"]) {
if ($arResult["NavRecordCount"] == 0 || ($arResult["NavPageCount"] == 1 && $arResult["NavShowAll"] == false))
{
return;
}
}
$strNavQueryString = ($arResult["NavQueryString"] != "" ? $arResult["NavQueryString"] . "&" : ""); ?>
<? if ($arResult["bDescPageNumbering"] === true): ?>
<? if ($arResult["NavPageNomer"] > 1): ?>
<a href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] - 1) ?>"
id="infinity-next-page">показать еще</a>
<? endif ?>
<? else: ?>
<? if ($arResult["NavPageNomer"] < $arResult["NavPageCount"]): ?>
<a href="<?= $arResult["sUrlPath"] ?>?<?= $strNavQueryString ?>PAGEN_<?= $arResult["NavNum"] ?>=<?= ($arResult["NavPageNomer"] + 1) ?>"
id="infinity-next-page">показать еще</a>
<? endif ?>
<?endif ?> |
В result_modifier.php шаблона Bitrix:search.page добавил код на сброс буфера страницы:
| Код |
|---|
if (array_key_exists('is_ajax', $_REQUEST) && $_REQUEST['is_ajax']=='y') {
$APPLICATION->RestartBuffer();
} |
| Код |
|---|
if (array_key_exists('is_ajax', $_REQUEST) && $_REQUEST['is_ajax']=='y') {
die();
} |
В конце в скрипты шаблона сайта добавил JS-код:
| Код |
|---|
$(document).on('ready', function(){
var loading = false;
$(window).scroll(function() {
if ($('#infinity-next-page').size() && !loading) {
if ($(window).scrollTop()+100 >= $(document).height()-$(window).height()) {
loading = true;
$.get($('#infinity-next-page').attr('href'), {is_ajax: 'y'}, function(data){
$('#infinity-next-page').after(data);
$('#infinity-next-page').remove();
loading = false;
});
}
}
});
}); |
Но в результате пагинация отрабатывается стандартная. Подскажите, вообще можно ли реализовать этот функционал без загрузки готового решения из магазина, или напрасный труд? И правильно ли я размещал коды?