Меню
Светлый путь
  • Главная
  • Документация
    • Php
    • Linux
    • Windows
    • Bitrix
    • WordPress
    • Полезное
  • Бесплатный хостинг
    • Российский бесплатный хостинг
    • Зарубежный бесплатный хостинг
  • Книги
    • Администрирование
      • Windows
      • Linux
      • Cisco
      • Other
    • Программирование
      • Delphi
      • Python
      • PHP
      • Assembler
      • Kotlin
    • Хакинг
    • Вирусы
    • SEO
  • Журналы
    • Хакер Спец
Светлый путь

Подгрузка контента при скролленге в Bitrix

Опубликовано 5 июля, 202013 июля, 2020

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

И так, преступим непосредственно к реализации. Для начала на нужно кастомизировать шаблон компонента 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;}?>
<div class="bottom_pager_ajax" style="clear:both;width:100%; height:1px;"> </div>
<script type="text/javascript">
//записываем количество страниц
var count = <?=$arResult["NavPageCount"];?>
//первый запрос происходит для второй страницы
var begin = 2;
var endScroll = false;
//определяем положение нашего пагинатора на странице
var getApprovalLoanPos = $('.bottom_pager_ajax').offset().top;


$function(){
//если есть еще элементы, которые мы не вывели,
//то при скролле до пагинатора показываем следующию порцию элементов
$(window).scroll(function(){
var bodyScroll = $(window).scrollTop() + $(window).height();
var scrollResult1 = getApprovalLoanPos - bodyScroll;
if(scrollResult1 < 50 && !endScroll && begin <= count){
endScroll = true;
loader();
}
})
});


//функция отправки ajax запроса
function loader(){
//показываем стандартный прелоадер битрикса
BX.showWait();
$.ajax({
url: "<?=$APPLICATION->GetCurPage();?>?PAGEN_1=" + begin,
type: "POST",
data: ({
resize: 'Y'
}),
success: function(data){
BX.closeWait();//скрываем стандартный прелоадер битрикса
$(".more_ajax").append(data);//добавляем эелементы на страницу
begin++;//переопределяем счетчик
getApprovalLoanPos = $('.bottom_pager_ajax').offset().top;
endScroll = false;
},
fail: function(){
//если ajax запрос не прошел, тогда просто 
//скрываем стандартный прелоадер битрикса
BX.closeWait();
}});
}
</script>

Затем на нужно кастомизировать шаблон вывода наших элементов (шаблон компонента news.list, section.list и т.д. у кого что использовалось):

<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
$this->setFrameMode(true);?>
<ul class="more_ajax">
<?//если запрос ajax, то очищаем буфер
if(IS_AJAX && $_REQUEST['resize'] == "Y")
$APPLICATION->RestartBuffer();?>
<?foreach ($arResult['ITEMS'] as $key => $arItem):
$this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], $strElementEdit);
$this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], $strElementDelete, $arElementDeleteParams);?>
<li>
<!-- Тут вывод описания вашего элемента -->
</li>
<?endforeach;?>
<?//если запрос ajax, то очищаем буфер
if(IS_AJAX && $_REQUEST['resize'] == "Y")die();?>
</ul>
<?if($arParams["DISPLAY_BOTTOM_PAGER"]):?>
<?=$arResult["NAV_STRING"]?>
<?endif;?>

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Search

Свежие записи

  • Как в VirtualBox назначить имя типу подключения «Сеть NAT»
  • Использование фильтра plugin_row_meta WordPress
  • Cron отключаем отправку писем при выполнении заданий
  • Использование библиотеки phpQuery в PHP
  • MariaDB/MySQL: general_log – логгирование всех запросов

Свежие комментарии

    Архивы

    • Март 2023
    • Январь 2023
    • Декабрь 2022
    • Сентябрь 2022
    • Август 2022
    • Июль 2022
    • Июнь 2022
    • Май 2022
    • Июль 2021
    • Июнь 2021
    • Февраль 2021
    • Октябрь 2020
    • Сентябрь 2020
    • Август 2020
    • Июль 2020

    Рубрики

    • Bitrix
    • htaccess
    • Linux
    • Mysql
    • Php
    • SEO
    • Uncategorized
    • Windows
    • WordPress
    • Бесплатный хостинг
    • Веб Сервер
    • Документация
    • Зарубежный бесплатный хостинг
    • Книги
    • Полезное
    • Российский бесплатный хостинг

    Мета

    • Войти
    • Лента записей
    • Лента комментариев
    • WordPress.org

    Тизер

    cod

    ©2023 Светлый путь | sinicha.ru | animesound.sinicha.ru | hentaij.ru
    Яндекс.Метрика