Автообновление страницы

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

Аватар пользователя alnov alnov 3 декабря 2015 в 6:05

View выводит некий список, задача - автообновлять содержимое при появлении новой строки. Сейчас просто использую модуль Views Auto-Refresh, он обновляет с заданной периодичностью. Подозреваю что вариант не лучший, поскольку он излишне нагружает сервер. Но с этим ещё можно мириться. Проблема в том, что если строк много (список длиннее видимой области, соответственно появляется скролл) и пользователь просматривает нижние строки, при обновлении содержимое уплывает вниз. Т.е. отображается верхняя часть списка. Как сделать чтобы при обновлении пользователь видел тот же участок содержимого, где он находился?

Комментарии

Аватар пользователя alnov alnov 4 декабря 2015 в 8:04

Вопрос со скроллом решил сам - удалил в ajax_view.js вот это вот:
if (offset.top - 10 < $(scrollTarget).scrollTop()) { $(scrollTarget).animate({scrollTop: (offset.top - 10)}, 500);}
Теперь ничего никуда не смещается, все ок. Отпишитесь если так делать вобще то не хорошо и как тогда это можно было бы сделать хуком.
Остаётся вопрос насчет обновления по событию вместо обновления по таймеру. Порывшись на drupal.org, пришел к выводу что сделать это можно только с помощью nodejs. Так ли это? По-другому никак? А то ставить node.js - редкостный геморрой, судя по всему.
И ещё вопросик. Чтобы не появлялся значок обновления и, соответственно не дергалось содержимое, пришлось сделать автообновляемый блок, помещенный на требуемую страницу. Но здесь получается такая ерунда: если блок изначально пустой, то автообновление не происходит, и при появлении в нем новых элементов, пользователь их не увидит до ручной перезагрузки страницы. Если же хоть одна запись в блоке изначально присутствует, то все хорошо обновляется. Соответственно, надо либо как то вырубить появление значка обновления, либо профорсировать загрузку блока, даже если он пустой.