Как сделать вьюху, перехватывающую вывод ноды (пробую сделать бесконечный скроллинг)

Главные вкладки

Аватар пользователя Valeratal Valeratal 17 декабря 2015 в 22:25

Задумался о том, как сделать бесконечный скроллинг

Пример _http://apparat.cc/news/less-animals/

Много разных проблем, решаю поэтапно

Решил делать не бесконечный, а допустим на три ноды (чтоб не вешать браузер, да и мало кто читает больше за раз)

1 проблема - вьюха-перехватчик урла

Как я понимаю, нужно сделать вьюху, кот. будет показывать 1 ноду (кот. по конкретному урлу, например node/1) и еще 2 (отобранных по какому нибудь принципу, да хоть 2 новых) подгружая их по мере доскролливания к концу первой ноды.

Собственно бесконечный скроллинг реализовать просто - есть готовые модули
А вот, как сделать вьюху, пока не понимаю.

Похожие ноды вывести более-менее умею (аргументы, то-се).
А вот как сказать вьюхе, чтоб перехватывала урл - не ясно.

Комментарии

Аватар пользователя bumble bumble 17 декабря 2015 в 23:29

Есть вот такие штуки:

https://github.com/dirkgroenen/jQuery-viewport-checker
или
http://imakewebthings.com/waypoints/

С их помощью можно отслеживать область просмотра пользователя.

Добавить в "низ" ноды пустой блок, и при долистывании до него AJAX'ом загружать вьюху, передав в неё нужные аргументы.

Аватар пользователя Orion76 Orion76 18 декабря 2015 в 0:00

Плохо понимаю, зачем это нужно...
Тем более если

Valeratal wrote:

- есть готовые модули

Похоже, месье знает толк в извращения..

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

Пейджер скрываете.
При прокрутке доконца, js-ом имитируете клик по пейджеру..
И как-то делаете, чтобы подгруженный контент не заменял текущий, а добавлялся после него..

В общих чертах как-то так..

Аватар пользователя Valeratal Valeratal 18 декабря 2015 в 10:05

bumble wrote:

Добавить в "низ" ноды пустой блок, и при долистывании до него AJAX'ом загружать вьюху, передав в неё нужные аргументы.

В общем виде понятно. Пока не ясно "как". Это явно не "включить модуль"

А вот

Orion76 wrote:

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

Не подойдет, потому что у Вас будет первый пункт вьюхи уже загружен сразу, а не при "доскроллинга до низа материала

<a href="mailto:sas@drupal.org">sas@drupal.org</a> wrote:

Валера учи азы! Wink

Меня не интересует абстрактный аякс. Интересует конкретные варианты решения конкретной проблемы

Аватар пользователя Valeratal Valeratal 18 декабря 2015 в 10:07

Но это кстати все мелочи

Бида гораздо шире.
Надо ведь при доскроллинге менять урл и перезагружать скрипты счетчиков и рекламных систем

Аватар пользователя Orion76 Orion76 18 декабря 2015 в 10:40

Valeratal wrote:

Не подойдет, потому что у Вас будет первый пункт вьюхи уже загружен сразу,

Подойдет-)
Просто никто не говорил что "будет легко"-)
Без кастомного кода тут всеравно не обойтись..

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

Valeratal wrote:

Надо ведь при доскроллинге менять урл

Url менять , без перезагрузки, страницы нельзя..
Только фрагмент (часть урла после "#"), но в этом смысла нет..
Да и вообще, в смене урла смысла нет , т.к. контент подгружается аяксом..

Valeratal wrote:

и перезагружать скрипты счетчиков и рекламных систем

А вот это уже не проблема сделать кастомным кодом тому кто в танке..

ЗЫ.. Любопытство раздирает.. -)
Так в чем же всетаки причина отказа от готовых модулей?

Аватар пользователя .poltergeist .poltergeist 18 декабря 2015 в 11:10

урл менять можно Blum 3 HTML5 History/State API в помощь. это требуется для виджетов социалок, например (поделиться, мне нравится и т.п.)
зы пилю сейчас модуль похожий, по ходу скоро будет готов

Аватар пользователя Valeratal Valeratal 18 декабря 2015 в 13:23

Orion76 wrote:

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

В этом ж вся фишка. Бесконечный скроллинг дает не только повышение длительности пребывания на странице, но и повышает глубину просмотра. А без смены урла, вы счетчикам не докажите, что юзер читает другую статью. Да и юзер не сможет не расшарить не поделиться конкретной нодой

Orion76 wrote:

Так в чем же всетаки причина отказа от готовых модулей?

каких готовых, готовых нет.

Аватар пользователя sas@drupal.org sas@drupal.org 18 декабря 2015 в 16:05

Valeratal wrote:

Меня не интересует абстрактный аякс. Интересует конкретные варианты решения конкретной проблемы

Он таки как раз не абстрактный, без знания инструмента и варианты ни к чему не приведут, которых кстати много, на что Вам и указали.

Аватар пользователя Orion76 Orion76 18 декабря 2015 в 22:56

Полностью согласен с предыдущим оратором.. Добавить нечего...
Или постигайте непостигнутое...
Или меняйте способ решения задачи..