В рамках работы над одним проектом понадобилась Автоподгрузка записей типа контента при прокрутке.
Оформил разработку в виде отдельного компонента, который подключается в шаблоне списка записей типа контента.
И делюсь им.
Обычная автоподгрузка записей. Работает в двух режимах — по клику и автоматически. В месте размещения выводится кнопка, клик по которой подгрузит ниже записи со следующей страницы
Кнопка (и стили и скрипты) выводятся следующим кодом
Этот код надо разместить в файле списка записей (например, default_list.tpl.php или сделать копию этого файла и назвать типконтента_list.tpl.php, чтобы использовать автоподгрузку только в одном типе контента) ДО кода вывода пагинации
тогда новые записи будут подгружать автоматически при прокрутке.
Компонент предоставляется как есть, бесплатно. Автор не несет никакой ответственности.
Компонент не пишет ничего в базу. Поэтому для удаления просто удалите файлы компонента.
Предназначен только для шаблона modern (и дочерних)
Последняя актуальная версия на момент написания zloading20210103_1.0.0 /users/files/download7785.html
Там же всегда будет последняя актуальная версия разработки, если обновления таки будут.
Обратите внимание! В архиве для примера находится файл templates/modern/content/news_list.tpl.php с включенным в него кодом для вывода автоподгрузки. Этот шаблон применится к типу контента news, если таковой есть. Вы можете удалить этот файл или переименовать. Или не копировать при установке.
Оформил разработку в виде отдельного компонента, который подключается в шаблоне списка записей типа контента.
И делюсь им.
Что это

Обычная автоподгрузка записей. Работает в двух режимах — по клику и автоматически. В месте размещения выводится кнопка, клик по которой подгрузит ниже записи со следующей страницы
Кнопка (и стили и скрипты) выводятся следующим кодом
<?php if($total > $page * $perpage){ $this->renderControllerChild('zloading','button',[ ]); } ?>
<?php echo html_pagebar($page, $perpage, $total, $page_url, array_merge($filters, $ext_hidden_params)); ?>
Автоматическая подгрузка
Если нужен режим автоматической подгрузки, то нужно добавить параметр вот так
<?php if($total > $page * $perpage){ $this->renderControllerChild('zloading','button',[ 'auto' => true ]); } ?>
Демо
Испытать в работе можно тутОграничения
Автор захотел сделать еще один велосипед на IntersectionObserver и сознательно не использовать сторонних библиотек автоподгрузки. Настаивать на их использовании бесполезно.Компонент предоставляется как есть, бесплатно. Автор не несет никакой ответственности.
Компонент не пишет ничего в базу. Поэтому для удаления просто удалите файлы компонента.
Предназначен только для шаблона modern (и дочерних)
Вебмастерам
После подгрузки очередной страницы вызывается событие icms_zloading_loaded. Вы можете использовать его, чтобы переинициализировать скрипты во вновь подгруженных записях. Пример использования события есть в templates/modern/controllers/zloading/button.tpl.phpГде взять
В списке файлов моего профиля /users/1009/files.htmlПоследняя актуальная версия на момент написания zloading20210103_1.0.0 /users/files/download7785.html
Там же всегда будет последняя актуальная версия разработки, если обновления таки будут.
Обратите внимание! В архиве для примера находится файл templates/modern/content/news_list.tpl.php с включенным в него кодом для вывода автоподгрузки. Этот шаблон применится к типу контента news, если таковой есть. Вы можете удалить этот файл или переименовать. Или не копировать при установке.
Дай тут что то то бесплатно -Но рассказав как это сделать что бы заработало- это для тех кто что бы попробовать. На реальных проектах вряд ли люди будут ставить. Соберите по человечески - выставите счет например я бы купил за 600 руб.+ сделайте описание+ оформите в каталог дополнений.
Я думал сделать виджетом, но виджет не знает про пагинацию. Можно грузить все скрипты при каждом вызове виджета, искать пагинацию, и если есть пагинация, запускать код в работу. Мне такой вариант не подходит.
Сделать решение универсальным для всех не получится. У всех разные поля, из коробки будут работать только поля без интерактива. Например, не получится так подгрузить яндекс карту, нужно будет немного танцев. И т.п.
Это тоже отличное дополнение!
Сделать под конкретный сайт и набор полей в принципе можно.
Если есть время, сколько будет стоить данная разработка?
Спасибо.
Интересно, удастся ли "завести" комментарии у подгруженных записей.
Пока получилось так
Смотреть:
/forum/thread18939-1.html
/blogs/bitblog/modul-avtopodgruzki-stranic-dlja-instantcms-2-x.html
Небольшая демка с модулем от Val на моём стареньком демо сайте - http://xyz-nk.ru/activity
Но без пагинации было бы лучше.
Без пагинации не получится узнать ссылку на следующую страницу.
Без них скрипт вставится в месте вывода - должно работать.
Не грузится:
Uncaught TypeError: icms.menu.initSwipe is not a function
Но работало, когда загружалась часть страницы(до "Показать еще") с ошибкой из-за $this->addBottom(ob_get_clean()).
но проверил что DATA возвращается только заголовок с наборами без списка. поэтому и фильтровать нечего
<h1>Заголовок</h1>
<div class="content_datasets">
<ul class="pills-menu">
<li></li>
...
<li></li>
</ul>
</div>
Предположу, что в связях в виде вкладки работать будет, а в виде списка - нет.
После установки файла в настройках Типа контента пропадает выбор «Стиль списка по умолчанию», 2.14.2 ...
Всё верно. Ведь вы же назвали файл ваштипконтента_list.tpl.php, а не default_list_ваштипконтента.tpl.php. Когда есть файл ваштипконтента_list.tpl.php, всегда будет работать только он, поэтому сам факт выбора стиля не нужен.
Удалил с пакета news_list.tpl.php, в default_list_tiles.tpl.php (плитка) в 121 строку прописал код «Автоматическая подгрузка», работает. Всем спасибо !
Добрый. Если добавить прокрутку для default_list_tiles.tpl, то pagebar уезжает на футер
А в связях работает корректно? Если выведено 20 записей через связи, то они работать будут корректно?
Не знаю. Не люблю связи, не пользуюсь ими.
на 2.15.1 модерн работает не корректно. один раз подгружает и дальше не хочет.
на дочерних шаблонах вообще автоподгрузка не работает а ручная подгрузка кнопка не исчезает даже если дальше нет контента
2.15.1 demo.bergorod.ru/news
Только что еще раз проделал описанное в записи. Все работает… Смотрите ошибки в консоли браузера.
А как-то влияет это на поисковика? Поисковик попадёт к записям не первой страницы?
Попадет.
Ссылки в блоке списка страниц никуда не деваются.
Все работает! Все Ок!