В рамках работы над одним проектом понадобилась Автоподгрузка записей типа контента при прокрутке.
Оформил разработку в виде отдельного компонента, который подключается в шаблоне списка записей типа контента.
И делюсь им.
Обычная автоподгрузка записей. Работает в двух режимах — по клику и автоматически. В месте размещения выводится кнопка, клик по которой подгрузит ниже записи со следующей страницы
Кнопка (и стили и скрипты) выводятся следующим кодом
Этот код надо разместить в файле списка записей (например, 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, если таковой есть. Вы можете удалить этот файл или переименовать. Или не копировать при установке.
Реклама #
Алексей Т 3 года назад #
Дай тут что то то бесплатно -Но рассказав как это сделать что бы заработало- это для тех кто что бы попробовать. На реальных проектах вряд ли люди будут ставить. Соберите по человечески - выставите счет например я бы купил за 600 руб.+ сделайте описание+ оформите в каталог дополнений.
Zau4man 3 года назад #
Я думал сделать виджетом, но виджет не знает про пагинацию. Можно грузить все скрипты при каждом вызове виджета, искать пагинацию, и если есть пагинация, запускать код в работу. Мне такой вариант не подходит.
Сделать решение универсальным для всех не получится. У всех разные поля, из коробки будут работать только поля без интерактива. Например, не получится так подгрузить яндекс карту, нужно будет немного танцев. И т.п.
Def 3 года назад #
Это тоже отличное дополнение!
Zau4man 3 года назад #
Сделать под конкретный сайт и набор полей в принципе можно.
Василич 3 года назад #
Если есть время, сколько будет стоить данная разработка?
Спасибо.
Zau4man 3 года назад #
Интересно, удастся ли "завести" комментарии у подгруженных записей.
Zau4man 3 года назад #
Пока получилось так
T34 3 года назад #
DeDja 3 года назад #
Смотреть:
/forum/thread18939-1.html
/blogs/bitblog/modul-avtopodgruzki-stranic-dlja-instantcms-2-x.html
Небольшая демка с модулем от Val на моём стареньком демо сайте - http://xyz-nk.ru/activity
T34 3 года назад #
livecom 3 года назад #
Scythian 3 года назад #
Сергей 3 года назад #
F_a_R_i_D 3 года назад #
Но без пагинации было бы лучше.
Zau4man 3 года назад #
Без пагинации не получится узнать ссылку на следующую страницу.
kolecha 3 года назад #
Zau4man 3 года назад #
Без них скрипт вставится в месте вывода - должно работать.
kolecha 3 года назад #
Не грузится:
Uncaught TypeError: icms.menu.initSwipe is not a function
Но работало, когда загружалась часть страницы(до "Показать еще") с ошибкой из-за $this->addBottom(ob_get_clean()).
Zau4man 3 года назад #
kolecha 3 года назад #
но проверил что DATA возвращается только заголовок с наборами без списка. поэтому и фильтровать нечего
kolecha 3 года назад #
<h1>Заголовок</h1>
<div class="content_datasets">
<ul class="pills-menu">
<li></li>
...
<li></li>
</ul>
</div>
Def 3 года назад #
Zau4man 3 года назад #
Предположу, что в связях в виде вкладки работать будет, а в виде списка - нет.
Def 3 года назад #
noname 3 года назад #
После установки файла в настройках Типа контента пропадает выбор «Стиль списка по умолчанию», 2.14.2 ...
Loadырь 3 года назад #
Всё верно. Ведь вы же назвали файл ваштипконтента_list.tpl.php, а не default_list_ваштипконтента.tpl.php. Когда есть файл ваштипконтента_list.tpl.php, всегда будет работать только он, поэтому сам факт выбора стиля не нужен.
noname 3 года назад #
Удалил с пакета news_list.tpl.php, в default_list_tiles.tpl.php (плитка) в 121 строку прописал код «Автоматическая подгрузка», работает. Всем спасибо !
noname 3 года назад #
Добрый. Если добавить прокрутку для default_list_tiles.tpl, то pagebar уезжает на футер
Def 2 года назад #
А в связях работает корректно? Если выведено 20 записей через связи, то они работать будут корректно?
Zau4man 2 года назад #
Не знаю. Не люблю связи, не пользуюсь ими.
Happy 2 года назад #
на 2.15.1 модерн работает не корректно. один раз подгружает и дальше не хочет.
на дочерних шаблонах вообще автоподгрузка не работает а ручная подгрузка кнопка не исчезает даже если дальше нет контента
Zau4man 2 года назад #
2.15.1 demo.bergorod.ru/news
Только что еще раз проделал описанное в записи. Все работает… Смотрите ошибки в консоли браузера.
Александр Сергеевич 2 года назад #
А как-то влияет это на поисковика? Поисковик попадёт к записям не первой страницы?
Zau4man 2 года назад #
Попадет.
Ссылки в блоке списка страниц никуда не деваются.
Capitan 2 года назад #
Все работает! Все Ок!