Автоподгрузка записей типа контента

InstantCMS 2.X

новая версия

#1 26 августа 2024 в 20:57

Подробное описание первой версии было в  блогах.

Изображение

По просьбам в личных сообщениях выкладываю немного доработанную версию. В новой версии добавлена поддержка рейтинга и избранного в подгруженных записях.

Демо все еще тут

Как ее включить

Как было указано ранее, кнопка (и стили и скрипты) выводятся следующим кодом

  1. <?php
  2. if($total > $page * $perpage){
  3. $this->renderControllerChild('zloading','button',[
  4. ]);
  5. }
  6. ?>

Если нужен режим автоматической подгрузки, то нужно добавить параметр вот так

  1. <?php
  2. if($total > $page * $perpage){
  3. $this->renderControllerChild('zloading','button',[
  4. 'auto' => true
  5. ]);
  6. }
  7. ?>

Если нужна поддержка рейтинга, то код будет такой

  1. <?php
  2. if($total > $page * $perpage){
  3. $this->renderControllerChild('zloading','button',[
  4. 'auto' => true,
  5. 'modules' => ['rating']
  6. ]);
  7. }
  8. ?>

А если нужна поддержка и рейтинга, и избранного, то код будет такой

  1. <?php
  2. if($total > $page * $perpage){
  3. $this->renderControllerChild('zloading','button',[
  4. 'auto' => true,
  5. 'modules' => ['rating','favorites']
  6. ]);
  7. }
  8. ?>

Как было указано в блогах ранее, вставлять этот код надо в файле списка записей (например, default_list.tpl.php или сделать копию этого файла и назвать типконтента_list.tpl.php, чтобы использовать автоподгрузку только в одном типе контента) ДО кода вывода пагинации, т.е. до кода

  1. <?php echo html_pagebar($page, $perpage, $total, $page_url, $filter_query); ?>

По аналогии можно добавить поддержку и других компонентов, если у них есть свои js классы, и в них определен метод onDocumentReady. Тогда название этого компонента можно указать в списке через запятую.

Обратите внимание!

В архиве для примера находится файл templates/modern/content/news_list.tpl.php с включенным в него кодом для вывода автоподгрузки (можно скопировать для примера). Этот шаблон применится к типу контента news, если таковой есть. Вы можете удалить этот файл или переименовать. Или не копировать при установке.

Ограничения

Компонент предоставляется как есть, бесплатно. Автор не несет никакой ответственности.
Компонент не пишет ничего в базу. Поэтому для удаления просто удалите файлы компонента.
Предназначен только для шаблона modern (и дочерних)

Бонус

В комплекте идет виджет для работы автоподгрузки при просмотре записи. Вроде бы, я им на форуме еще не делился. Демо можно посмотреть тут

Прикрепленный файл
zloading20240826-1-0-2.zip 13 Кб
#2 27 августа 2024 в 03:43

Какой молодец. Скажите, а «photoswipe», «ajax-modal-ready» и ваш "+18" окна будут работать? Я первую версию ставил, вроде не работало. И можно ли будет свой скрипт подключать?

Очень хорошая новость.

Сейчас поставлю, протестить надо.

Добавлено спустя 1 час
  1. 'modules' => ['rating','favorites','age18','complain']

Не прокатило. Ну чтож, пока отлючим.

#3 27 августа 2024 в 07:26

Модал не будет работать, там в onDocumentReady идёт поиск только по уже загруженным в дом.дерево элементам, новые бинд не найдет.

Age18 тоже не будет работать, но там просто нет нужного метода onDocumentReady.

#4 27 августа 2024 в 23:01

Ну штож поделаешь. Бывает и такое. 

У меня давно была dle с этим хуком(убрал ссылку под спойлер на всякий случай).

 Там ничего подключать не надо было, все плюшки работали. Система наверно по другому работала. Ну да ладно, не беда.

#5 28 августа 2024 в 09:06

Age18 тоже не будет работать, но там просто нет нужного метода onDocumentReady.

Zau4man

Он и не нужен. Там надо просто поменять в файле templates\modern\controllers\age18\js\age18.js строку

  1. $('.age18hover').click(function(){

на эту

  1. $('main').on('click', '.age18hover', function(){

Модал тоже можно как-то ребиндить, но не могу повторить проблему, так как изображения из поля «Набор изображений» открываются в модалке без проблем на подгруженной второй странице.

#6 28 августа 2024 в 11:03

Там насколько я помню не прописывается сам класс к ссылке «ajax-modal-ready». При первых постах класс ссылки выглядит так:

  1. class="messages ajax-modal text-nowrap ajax-modal-ready"

Pри подгрузке 2-ой страницы класс ссылки выглядит так:

  1. class="messages ajax-modal text-nowrap"

Можно было конечно, просто ссылкой сделать без окна Модал. Какое нить popup окно

added:

Проверено: 18+ работает

И как бы например пару функций добавить?

  1. function myfunction(a) {bla bla}

Ну или отдельный файл js подключить чтоб выполнялся при загруске страниц например extra.js?

#7 28 августа 2024 в 11:16

Там насколько я помню не прописывается сам класс к ссылке «ajax-modal-ready»

pupsik

Вообще, можете добавить пару строчек в файл templates\modern\controllers\zloading\js\zloading.js

  1. icms.modal.bind('a.ajax-modal');
  2. $('.ajax-modal').addClass('ajax-modal-ready');

После строки 

  1. history.pushState(null, null, nexturl);

как-то так

Изображение

Этого будет достаточно для ребиндинга модалки

#8 29 августа 2024 в 00:27

«Complain» — теперь тоже работает :)

Добавлено спустя 1 час

Если кому надо спрятать пагинацию, то display:none и visbility:hidden не будут работать. Я поставил z-index

  1. .pagination-fixed{
  2. position:fixed;
  3. bottom: 10px;
  4. z-index: -999999;
  5. }
Добавлено спустя 2 часа

Вот как всегда с этими автоматическими подгрузками. Хоть одно, да не будет работать. Уже так близко был. Так близко.

Добавлено спустя 2 часа

Все теперь в порядке. У меня стоял скрипт «Показать еще/Скрыть» скрипт. Короче, давно хотел его убрать и поставить другой, он и так глючил. Нашел другой, теперь все как надо. 

Но это уже была не ваша проблема. То что связано с Инстант работает как надо. Благодарю. Я просто уже сам с собой беседу веду… Если у вас есть PayPal, скинте в почту. 

Добавлено спустя 6 часов

Совсем забыл, пока не доскроллил до голосовалки. Тоже не фурычит. Это так, если 3-я версия будет.

my-instantcms.ru/catalog/80-oprosy.html

#9 29 августа 2024 в 07:43

пока не доскроллил до голосовалки. Тоже не фурычит

pupsik

Совсем непонятно, каким образом у вас виджет голосовалки связан с подгрузкой записей типа контента. Голосовалка у вас выводится полем?

#10 29 августа 2024 в 14:56

Да, именно через доп. поле. 

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.