Аякс навигация: комментарии, топики, страницы


Предложение. Всем известна проблема, когда в одном посте появляется 200+ комментариев. При этом страница начинает сильно тормозить, а навигация по комментариям затруднена. Под катом простое и изящное решение этой проблемы +к этому решается множество других вопросов связанных с навигацией.(это концепт, а не готовое решение) Итак концепт и принцип действия:

По умолчанию в посте показывается первые 20 (40,50 и т.д) комментариев. После того, как прокрутили до конца появляется панель навигации как на рисунке выше (все комментарии условно разбиваются на указанное количество, например якорями, т.е 2 страница* — следующие 20 комментариев). Далее подгрузка новых записей автоматически (или по клику). Это решение уже реализовано instantcms в виде плагина «автоподгрузка». Посмотреть в действии можно здесь http://www.mopedist.ru/forum/thread82-18.html (при прокрутке вниз появляется голубая панель навигации). Концепт для существующего дизайна alto cms на рисунке выше. Панель можно удобно вписать над стандартными кнопками навигации.

* — страница условно, на самом деле это группа из заданного количества комментариев.

Тот же механизм можно использовать для подгрузки постов и любых других страниц. Эта панель не позволит пользователю заблудиться в комментариях, постах, страницах.

Конечно принцип действия существенно отличается от готового модуля на instant — это работоспособный наглядный пример, а не готовое решение.

Похожие статьи


21 комментарий

0
Сейчас если появились комментарии, нажатием на цифру «количество новых комментариев» страница прокручивается до первого непрочтенного коммента. При реализации «постраничной» навигации я так понимаю данный функционал пропадет? Или нужно будет показывать сразу все комментарии. И как при этом будет работать кнопка «обновить комментарии»?
0
«постраничная навигация» это условно, на самом деле это просто группа из заданного количества комментариев разделенных «якорями», что мешает нажатием на цифру «количество новых комментариев» до первого непрочтенного коммента точно таким же якорем. Я думаю этот функционал не должен пересекаться.
0
т.е. при переходе к новому комментарию должна произойти проверка что все предыдущие комментарии видимы, если нет то открыть их. При обновлении комментариев, те что попадают в открытую область должны быть сразу видимы, те что ниже определенного уровня скрыты и при переходе к ним должны стать видимыми.
Я опираюсь на то что при открытии страницы все комментарии загружаются, просто часть невидима. Если подобное делать на аяксе мне кажется будет ещё сложнее
0
совершенно верно — при открытии не просмотренного комментария открываются все перед ним.
0
Насколько я знаю комментарии из коробки можно разбить на страницы и в итоге получиться практически тоже самое и для обычного юзера такое разбиение будет куда понятнее.
Хотя могу ошибаться.
0
клики по кнопкам приятнее автоматической подгрузки на аякс? O_o
0
Я вот честно сказать посмотрел аякс на сайте, который вы указали в качестве примера и для себя если честно особый разницы не ощутил. Возможно это связано с тем, что у меня довольно скоростной интернет.
Но пока это все из разряда «приятнее глазу».
Я думаю, что как сторонний плагин идея в принципе имеет место быть.
0
скорость интернета тут непричем
0
а вы пробовали скроллить топик с 500 и более комментариями? Мы убирали аватары, убирали кнопки голосования чтоб отрисовывалось меньше элементов, меняли верстку сбрасывая 30% кода, всеравно тормозит на ноуте (вот лично у меня). Поэтому нужно некое решение.
0
Я не отрицаю, что при больших объемах аякс — хорошее решение.
Мне просто кажется, что эта реализация должна идти сторонним плагином.
Хотя меня честно сказать полностью устраивает разбивка на страницы с выводом не более 20 топиков, где на первой показываются самые последние и пошло…
0
Каких таких топиков? вы о чем?
0
Извиняюсь. Вместо «комментариев» написал «топиков».

совершенно не факт что вы получите именно 20 комментариев, а не 50 или 88 или все 500.
Вы имеете веду, что ветка может быть длинной, а считаться за отчетный комментарий будет только главный в ветке?
0
Бинго! =)
0
Тогда пожалуй вы правы.
0
мы точно об одном говорим? =)
По комментариям, даже если вы в конфиге укажете выводить по 20 комментариев, совершенно не факт что вы получите именно 20 комментариев, а не 50 или 88 или все 500.

Если вы про топики, то тут конечно проблем никаких
0
Мы убирали аватары, убирали кнопки голосования чтоб отрисовывалось меньше элементов, меняли верстку сбрасывая 30% кода, всеравно тормозит на ноуте (вот лично у меня).
Если это визуальные тормоза, то здесь я уже писал о возможных причинах такого явления.
0
из коробки все сложнее, там считается не комменатриями, а гнездами, по первому уровню. Т.е. на одной странице может получиться условно 200 комментариев, а на другой 30 (при установке настройки по 30 комментариев на страницу).
Разбивать дерево комментариев по страницам это не лучшая идея.
0
значит нужно делать выборку по количеству а не по веткам
+2
это при нормальной верстке допустимо, в ЛС изначально были вложенными уровни комментариев, один в другой. В общем нельзя им было разбивать ветки, как сейчас не знаю.
Я то вас поддерживаю и согласен с вами (попутно реализовываю ещё один вариант выхода из данной проблемы, если получится напишу на портале)
0
по сути это только навигация и никаких изменений в движок она не вносит, согласна с вами — реализовать может быть намного труднее чем кажется на первый взгляд )
0
Ну на самом деле в подгрузку комментов по скроллу(если включена пагинация комментариев) умеет копеечный одноименный плагин из каталога. Это не афишируется, потому что пагинация комментариев не совсем очевидна ввиду древовидности комментариев (выше Klaus описал все абсолютно верно) и навигацию не так-то просто сделать, нужно, например, учитывать якоря комментариев, и если переходят по ссылке с якорем — подгружать эту «страницу».

Есть желание в ближайшее время пагинацию попробовать реализовать подобным образом (осторожно, по ссылке профиль самоуверенного эгоцентриста с золотым авто).
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.