Я недавно перешёл на Discourse, и в моём сообществе нет единого мнения насчёт бесконечной прокрутки: некоторым пользователям это нравится, другим всё равно, а третьи воспринимают это как экзистенциальную угрозу для сообщества. Судя по другим обсуждениям, которые я прочитал здесь, это распространённая точка разногласий.
Я понимаю, что разработчики этого программного обеспечения не планируют добавлять пагинацию в качестве опции. Я могу это уважать. На данный момент я написал несколько плагинов и шаблонов, немного изучил исходный код ядра на GitHub, поэтому имею базовое представление о работе программы. Меня просто интересует, насколько сложно будет написать плагин для пагинации, если моё сообщество продолжит сопротивляться? Скорее всего, мне придётся переписывать значительную часть базового кода на Ruby? Можно ли реализовать это как надстройку над существующим кодом, которая будет работать бесшовно? Или структура базы данных действительно плохо спроектирована для запросов с пагинацией?
Просто хотел получить оценку осуществимости этой задачи от людей, которые лучше всего знакомы с кодом.
Думаю, главная проблема, с которой вы столкнётесь, — это постоянная необходимость поддерживать плагин, который очень часто ломается, так как вам придётся переопределять очень много элементов интерфейса, и даже незначительные изменения в ядре могут всё сломать.
Проблема, скорее всего, не техническая — почти любая разовая кастомизация возможна, — а скорее практическая и экономическая.
Если вы всё ещё полны решимости: попробуйте и дайте знать, если я ошибаюсь!
Или почему бы не выбрать более лёгкий путь и не использовать форум, построенный на страницах? Таких много.
Это те же пользователи, которые расстроены тем, что не могут использовать свои Commodore 64. Скажите им, что вам очень жаль, и что вы активно работаете над решением проблемы, но ничего не делайте. Бесконечная прокрутка уже как минимум десятилетие является отраслевым стандартом.
Или вы можете попытаться выяснить, почему именно они этого хотят (возможно, чтобы они могли ссылаться на конкретное место в теме?), и показать, что теперь можно ссылаться на конкретный пост, а не просто «видеть шестой пост на этой странице». Но они всё равно будут очень недовольны тем, что всё не совсем так, как было десятилетие назад.
Я думаю, ваша точка зрения здесь очень весомая. В конечном итоге этот плагин заставит нас либо никогда не обновляться, либо превратит процесс в бесконечную задачу.
Как предполагает @pfaffman, решение, основанное на коммуникации, вероятно, проще технического.
У меня есть ощущение, что большинство этих пользователей просто привыкнут к этому. Я просто хотел изучить другие варианты, если они не привыкнут.
Я всё ещё открыт к обратной связи о том, насколько (не)реализуема эта задача, от любого другого участника.
Разработка могла бы стоить где-то от 10 тысяч долларов и выше, возможно, до 50 тысяч. Может быть, вы могли бы попросить ваше сообщество собрать эти средства? И ещё — платить вам 5 тысяч долларов в год за поддержку… Превращая бесплатный проект с открытым исходным кодом в дорогостоящую головную боль.
Я не вижу большой пользы от «пагинации», учитывая, что можно ссылаться напрямую на категорию, тему или пост?
Я действительно считаю, что «гибридный» компонент может быть вполне практичным.
Каждые N постов в теме вы вставляете «пагинатор»:
Пост 1
Пост 2
...
Пост 15
[*Страница 1*] [Страница 2] [Страница 3] [Страница 4]
Пост 16
...
Отказ от бесконечной прокрутки в Discourse — непрактичное занятие, но компонент, реализующий «гибридный» пагинатор (даже с изменениями в списке тем), вероятно, обойдётся в диапазоне 2–5 тысяч.
Сэм, твоё сообщение напомнило мне Natural breakpoints or "chapters" for long topics?; мне было бы очень интересно увидеть результат чего-то подобного. И это могло бы стать хорошей альтернативой для тех, кто скучает по пагинации. Часто им кажется, что не хватает пагинации, потому что страницы — это всего лишь точки остановки и ничего больше.
Похоже, это способ связывать отдельные темы, а не добавлять навигацию по страницам внутри одной темы.
Я немного продвинулся в реализации пагинации. Идея заключалась в использовании встроенной в Discourse функции ?page=x для навигации между «страницами» и блокировке загрузки дальнейших сообщений путём переопределения функций потока постов, которые загружают следующую партию постов.
Подробнее см. ниже (и нерешённую проблему):
Я добавил кнопки пагинации в верхней и нижней части каждой темы. Пока не разобрался, как получить общее количество страниц в теме, чтобы знать, сколько кнопок отображать. С бэкенда это сделать несложно, но я предпочитаю решение в виде компонента темы, а не плагина, поэтому варианты реализации более ограничены.
С учётом этих двух моментов система пагинации, кажется, будет в основном функциональной. Однако, наверняка останутся некоторые странные поведения, которые потребуют доработки, например: учитываются ли удалённые посты как сообщение на странице или как контролировать количество постов при переходе на последнюю страницу.
Я периодически возвращаюсь к этой задаче. Не уверен, что когда-либо достигну чистого решения, но думаю, что возможно существование «костыльного», но в основном рабочего решения.
Чтобы создать навигацию от темы к теме (и автоматически вставлять кнопки «Назад/Предыдущая» и «Вперед/Следующая» на каждой теме в последовательности), я делаю это следующим образом…
Я использую функцию «Ответ как связанная тема» повторно, а затем стилизую ссылки с помощью CSS так …
Да, я думаю, это лучший подход. Если вы сможете точно выяснить, что именно им не нравится в бесконечной прокрутке, это поможет перевести разговор в более продуктивное русло. Если им не хватает какой-то функциональности, возможно, легко найти её аналог. Если что-то работает некорректно, это можно улучшить. Но если дело просто в неприятии перемен, то тут мало что можно сделать.
Единственная причина, которую я могу придумать, — попытаться засчитать больше просмотров страниц, поскольку рекламодатели могут не согласиться с тем, что бесконечная прокрутка приравнивается к просмотру страницы.
Мне кажется, бесконечная прокрутка может вызывать чрезмерную зависимость. Я предпочитаю пагинацию, потому что она даёт мне момент остановиться и спросить себя, хочу ли я продолжать. Кроме того, она разбивает длинные ветки обсуждений на удобные части, что, по моему опыту, менее стрессово и не перегружает мозг.
Есть микроблогинговая платформа пост-Twitter, которая решила использовать пагинацию вместо бесконечной прокрутки, и для меня это было очень ясным сигналом того, что они стремятся к социально ответственному и здоровому подходу к социальным сетям.
Не уверен, что это подходящее место для комментария. Но я подумал, что, возможно, смогу прояснить, почему некоторым пользователям эта функция важна, так как я пока не видел, чтобы кто-то высказывал такую точку зрения.
Я уже использовал Discourse на других сайтах — это отличная платформа, и я очень ценю возможности её настройки (например, возможность отключить лайки, да здравствует!), но отсутствие пагинации, скорее всего, станет для меня решающим фактором отказа.
Отличная реклама, но этот клон Twitter не имеет никакого отношения к Discourse и является плохим примером пагинации (то есть страницы длинные и нестабильные)
Это не совсем невозможно. Несколько лет назад я создал полноценный плагин для пагинации (извините, он не будет с открытым исходным кодом). Если кто-то пытается это сделать, возможно, просто в качестве учебного проекта, я с радостью посмотрю ваш код и подскажу, в каком направлении двигаться. Но я бы не рекомендовал использовать это на продакшн-сайте, особенно если он хоть сколько-нибудь крупный.
*edit: посмотрев свой старый плагин чуть внимательнее, я не думаю, что стоит рекомендовать его и как учебный проект, если вы не очень увлечены. Это сложно.
Это не реклама, но я с удовольствием скрою название платформы, о которой шла речь, если это поможет меньше отвлекать от той точки зрения, которую я излагал.