Использование Discourse для создания блога или платформы с прокруткой в стиле Reddit, X или Facebook

Я начинаю эту тему, чтобы задокументировать свой путь в попытке превратить Discourse в более визуальную, бесконечно прокручиваемую платформу — нечто, ближе к опыту просмотра, который предлагают Reddit, X и Facebook.

Я буду использовать эту тему, чтобы делиться тем, что я пробую, что работает, что нет, какие компоненты я использую и с какими проблемами сталкиваюсь. Надеюсь, это также поможет всем, кто заинтересован в использовании Discourse для чего-то, выходящего за рамки традиционной структуры форума.

Точкой отсчета для этого проекта стало правило 90–9–1.

Оно гласит, что на большинстве социальных сетей, блогов и т. д.:

  • 90% пользователей в основном просматривают и потребляют контент.

  • 9% изредка реагируют, ставят лайки, делятся или комментируют.

  • 1% активно создают большую часть контента.

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

Discourse отлично справляется с обслуживанием тех 9% и 1%. Он построен вокруг обсуждений, ответов и активного участия. Однако я хочу сделать его таким же привлекательным и для гораздо более крупной группы людей, которые просто хотят открыть сайт и просматривать интересный свежий контент.

Что я пытаюсь построить

Я хочу использовать Discourse для создания более визуальной, непрерывной (в стиле doom scrolling) ленты, похожей на ленты в Reddit, X или Facebook.

В идеале этот опыт должен выглядеть примерно так:

  • Открыть главную страницу и сразу увидеть ленту с релевантными темами.

  • Непрерывно прокручивать от одной темы к другой.

  • Просматривать содержимое темы, не открывая отдельную страницу.

  • Видеть изображения, видео и отрывки текста прямо в ленте.

  • Ставить лайки, добавлять в закладки или отвечать, когда что-то привлекает внимание.

  • Автоматически убирать ранее просмотренный контент из поля зрения.

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

  • Постепенно персонализировать ленту с использованием категорий, тегов и тем, с которыми пользователь взаимодействует.

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

Зачем строить это на базе Discourse?

Discourse уже предоставляет большинство сложных компонентов:

  • Пользовательские аккаунты и профили

  • Категории и теги

  • Лайки, закладки и уведомления

  • Уровни доверия и модерация

  • Создание тем и ответы

  • Отслеживание прочитанного и непрочитанного

  • Рекомендуемые и связанные темы

  • Зрелая система плагинов и компонентов темы

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

На каком я сейчас этапе

  1. Я начал с отличной темы Redditish от @awesomerobot, которую мне пришлось форкнуть, чтобы я мог редактировать различные аспекты, такие как удаление пользовательского бокового меню. Я также сильно отредактировал CSS, чтобы оформить его так, как мы хотели.
  2. Включение Nested Views было необходимо, так как это покрывает стиль, необходимый для такого типа сайта.
  3. Я создал и добавил прокручиваемое меню в стиле YouTube, которое показывает все категории и пользовательские ссылки. Я использовал Custom Top Navigation Links, чтобы настроить и добавить ссылки.
  4. Модальное окно предпросмотра темы было необходимо, и я начал проектировать его, но легенда @Don создала более лучшую версию, которую можно найти здесь
  5. Статический кэшированный правый сайдбар везде был необходим, поэтому я начал с блоков правого сайдбара, а затем создал компонент темы, чтобы показывать его на страницах тем и т. д.
  6. Используя кастомные ссылки в шапке (иконки), я добавил кнопку «Создать пост» в шапку, чтобы сделать интерфейс чище.
  7. Изображения в постах выровнены по центру с размытым фоном, чтобы выглядеть аккуратнее (похоже на Reddit)
  8. Установка отрывков тем на 150 символов и их отображение между заголовком и изображением на карточках тем было необходимо (похоже на Facebook и X)

Следующими шагами станет выделенная лента, которая сможет:

  1. Начинаться с недавнего контента за определенный период, например за предыдущие 14 дней.

  2. Приоритизировать темы из категорий и тегов, за которыми следит пользователь.

  3. Смешивать популярные или трендовые темы для открытия нового.

  4. Фиксировать, когда тема действительно была просмотрена или пролистана.

  5. Снижать приоритет просмотренных тем, не скрывая их навсегда.

  6. Позволять прямые реакции и ответы из ленты.

Это не заменит традиционные списки тем или обсуждения. Это будет дополнительный способ открывать и потреблять тот же самый контент Discourse.

Следите за путешествием

Я буду продолжать обновлять эту тему по мере развития проекта, включая компоненты, которые я тестирую, изменения, которые я вношу, и препятствия, с которыми сталкиваюсь.

Мне также было бы интересно услышать от всех, кто пытался что-то подобное, особенно по вопросам:

  • Могут ли существующие данные об отслеживании прочтения поддерживать это.

  • Как лента могла бы работать для анонимных и новых зарегистрированных пользователей.

  • Насколько глубокой может быть персонализация без внедрения сложного алгоритма рекомендаций.

  • Создают ли непрерывные предпросмотры тем значительные проблемы с производительностью.

Цель состоит в том, чтобы признать, что «немолчаливые» 90% являются важной частью сообщества, и дать им опыт, спроектированный в соответствии с тем, как они на самом деле используют интернет.

Тестовый сайт, который я буду использовать для этого проекта:

https://www.m8wtf.com/

2 лайка