新消息能否显示在顶部而非底部?

大家好,

我正在将一个在线社区迁移到新的论坛软件。这里有 15 年的帖子(共 55,000 条)。旧论坛是 IP Board,所有帖子都呈一条长流展示,我们不需要单独的讨论主题。

Discourse 能否实现以下功能:

  1. 将新消息显示在顶部,而不是底部?
  2. 记住用户上次查看的位置?

也就是说,当用户访问 Discourse 时,能否记住他们上次“未读”的位置,并展示给他们上次阅读到的地方?然后用户可以向上滚动阅读新消息?

我很喜欢 Discourse 的内联回复功能,但我们不需要创建新主题。我们将完全在一个主题中活跃和互动。

谢谢。

1 个赞

你有一个主题包含 55,000 篇帖子吗?:thinking:
比如评论式帖子?并且顺序是倒序的。
但“第一”篇帖子是主题的主帖,我不确定在这里是否能更改这一点。

问题 #2 已通过 Discourse 解决:系统会“记住”用户阅读到的位置,当用户返回时,系统会将其定位到最后阅读的消息处。

3 个赞

感谢您的回复。什么是评论帖子?当我查看 Discourse 示例论坛并进入某个主题时,所有新帖子都显示在底部。

在我们的论坛上,您可以点击“新帖子”,它会在顶部发布一个新帖子。您也可以点击“回复”,这与新帖子类似,但会在帖子顶部添加“回复用户 4532”的文字。所有内容都以一条长线程的形式呈现,新帖子位于顶部。

像 Discourse 通常那样将新帖子放在底部或许可以接受,但我不希望每次进入论坛都要向下滚动 55,000 条帖子。是否可以将新帖子放在顶部?

你不需要这样做,系统会记住你上次离开的位置。此外,在任何主题中按 Shift+L 即可跳转到第一条未读帖子。

4 个赞

我认为没有一个回答触及了核心问题:据我所知,从 The MEGATOPIC: public good, or public menace? 来看,Discourse 绝对无法在单个主题中处理 55,000 条回复并保持良好的性能(即高效运行)。

4 个赞

主要问题的答案是否定的——新回复始终显示在底部。但已登录用户的阅读位置会始终保存。

3 个赞

这么多帖子有什么特别之处,尤其是与其他论坛软件相比,Discourse 有何独特之处?

我的意思是,在 phpBB 或 vBulletin 中,这非常直接,因为阅读时一次只会显示有限数量的帖子。

例如,来自一个德国论坛的这条线程有 20 万条帖子:

从技术角度来看,即数据存储方面,存储 20 万个各含 1 条帖子的线程,与存储 1 个含 20 万条帖子的线程,应该没有太大区别。在 SQL 数据库中,这只是一个标识某个帖子属于哪个线程的 ID。因此,这两种场景非常相似。

那么唯一的“问题”是以下这一点吗?→ Discourse 似乎一次性加载了太多帖子,因为最新的帖子位于底部,也就是说,在它之上的一切都需要被加载?因此,这特别容易导致问题,尤其是在浏览器渲染方面(用户端内存超出)?

1 个赞

标准行为:新回复始终显示在底部

嗯,我并不是说这一定可行,我并非前端编程专家,但我相信如果我们使用 JavaScript 操作 DOM,或许可以改变对象的显示顺序。

我缺乏足够的知识和经验来断言我们能否制作一个主题组件……我不知道那些擅长此类开发的专家是否能提供一个免费版本,或者也许需要在 Marketplace 中提出请求才能获得(如果可行的话)。

当然,如果回复超过 20 条,这样做就会变得非常不合理。因为在前端层面反转顺序,意味着页面必须先加载所有回复,然后由 JavaScript 操作对象以反转它们的顺序,这将导致随着主题中回复数量的增加,加载延迟显著增加。

展示信息是一回事,而在用户实时回复时,将回复“嵌套”在其他回复之上而不是之下(这是论坛的标准行为),则是另一回事。我不确定这是否能实现。:thinking:

1 个赞

您的社区需求很可能更适合通过聊天程序来满足。据我所知,目前没有支持消息置顶的聊天工具,但它们处理“所有讨论在同一信息流中”这一模式的效果远胜于论坛。

可供参考的选项包括:Zulip、Mattermost、Discord 和 Slack。

3 个赞

已关闭,原因同 Can discourse display topic replies in reverse order?