有意义的对话发生在房间里每个人都听到彼此想法的时候,而在 Discourse 上,扁平、线性的时间线一直是实现这一点的最佳方式。但扁平结构并不适合所有社区。在规模更大、节奏更快的论坛中,单个时间线上成千上万条回复会让任何人难以跟上。因此,我们今年一直在谨慎地试验完全嵌套的回复视图,并认为它非常适合那些已经超出扁平格式承载能力的社区。
这一功能最初作为一个实验性插件启动,现已转变为直接集成在 Discourse 中的项目。以下是目前嵌套主题的样子:
当某个特定帖子被链接(来自分享链接或通知)时,我们会显示单线程视图:
在您的站点上启用该功能
启用此功能的站点设置可在管理界面中找到。导航至“嵌套回复”部分,以控制该功能、默认排序模式、最大嵌套深度等选项。
路线图
截至撰写本文时,嵌套回复仍处于早期阶段,路线图尚未完全明确。我们已知将推进以下几项工作:
限制
- 当为某个分类启用嵌套功能时,已存在的主题仍保持扁平模式。每个主题均可通过管理员扳手单独切换,但目前尚无方法将整个现有分类转换为嵌套模式。
我们期待您的反馈
我们需要您的反馈以及使用该功能的实际体验,以帮助指导其开发。如果这看起来适合您的社区,不妨尝试一下,并告诉我们您和您的用户有何看法!
28 个赞
Lilly
(Lillian )
2
OMG 太棒了!时机也刚刚好。今晚我要把论坛迁移到带有两个容器的新服务器上,几周后常规赛和我们的体育竞猜池就要开始了,我迫不及待想把这个切换到新版本。这也将是一个很好的测试用例。
拥有平铺式和嵌入式讨论的选项真是太酷了——感谢 @markvanlan 和团队。
看看会出什么乱子也会很有趣:laughing
12 个赞
Ed_S
(Ed S)
3
需要说明的是:当树的多个分支中出现新回复时,单线程视图似乎一次只显示一条。我不得不多次返回查看,未读数量每次减少一个。
尽管 Discourse 已更新,我仍然找不到启用此功能的选项!
我是自行托管的,也许这就是原因:
Lilly
(Lillian )
5
请更新您的 Discourse 实例,然后进入所有站点设置并搜索“嵌套”。
您可以在创建新主题时通过主题管理扳手来切换该选项。
如果您希望其在某个分类中默认为启用状态,可以在分类设置标签页中进行启用。
我自托管并且它完全正常运行。
8 个赞
Richie
(Richie Rich)
7
能否通过“选择帖子 > 批量操作”选项对现有主题进行批量更改或更新?
或者是否有通过 Rails 控制台批量更新所有现有主题的选项?
1 个赞
Richie
(Richie Rich)
9
好的,不确定批量切换功能对于拥有数万条主题的分类是否可行。是否可以考虑使用 Rails 的批量/批处理转换任务?
另外,这个操作可逆吗?能否将线程化主题重新转换为扁平主题?
2 个赞
是的,我同意你的看法。这目前是一个限制,我们一定会继续思考这个问题。
我之所以选择在启用该功能时不转换类别中的历史主题,主要原因是用户的交互方式可能会有所不同。在扁平模式下,各种 <kbd>回复</kbd> 按钮的重要性降低了。帖子会出现在主题底部。我不确定用户是否总是有意点击“正确的那个”,以便在嵌套视图中正确显示。
基本上,我担心管理员会为历史主题启用该功能,随后导致对话变得难以阅读。我们会继续思考这个问题。我能想到的最简单的改进是:当切换类别设置时,弹出一个模态对话框,询问“是否将此设置应用到现有主题?”
4 个赞
ToddZ
13
我一直觉得“回复”标签可以更加具体——所以 不久前 我使用了一些自定义 CSS 来添加上下文:
截图
CSS
/* 为主题原始帖子(即主题本身)的回复按钮添加文本 */
#post_1 nav.post-controls {
.actions {
button.reply {
span.d-button-label:after {
// 在“回复”后添加此内容
content: " 回复此主题";
}
}
}
}
/* 为所有后续帖子(我称之为评论)的回复按钮添加文本 */
nav.post-controls {
.actions {
button.reply {
span.d-button-label:after {
// 在“回复”后添加此内容
content: " 回复此评论";
}
}
}
}
/* 为页面底部出现的蓝色“回复(主题)”按钮添加文本 */
#topic-footer-buttons {
.topic-footer-main-buttons {
button.btn-primary.create {
span.d-button-label:after {
// 在“回复”后添加此内容
content: " 回复主主题";
}
}
}
}
1 个赞
Lilly
(Lillian )
14
此方案的问题在于,对于偏好设置中语言为非英语的成员,其用户界面将不会进行翻译。
1 个赞
Richie
(Richie Rich)
15
有意思……
这是否意味着我们应该先在社区中进行隔离测试,然后再决定对所有现有主题进行转换?
这确实可行,前提是该功能能够支持数万个主题。
但必须非常明确地告知用户,此操作不可逆转 
该功能会先在 meta 上实施,还是在 https://try.discourse.org 上实施,以便我们在非生产环境中进行测试?
1 个赞
如果是我自己的社区,我会先进行隔离测试。另一方面,如果您为整个社区启用该功能,我们也能更快地获得更有价值的反馈
。玩笑归玩笑,我认为隔离测试可能是明智之举,但这里并没有破坏性的数据迁移。该功能可以安全地启用和禁用。您在此做出的任何决定都不会将您锁定在任一方向上。
我想我有点无意中回答了这部分!启用嵌套功能只是为数据库中的每个主题创建一个 nested_topic 记录,并启动一个任务来计算祖先树中的回复数量。禁用嵌套则会移除该 nested_topic 记录,您会回到扁平结构,没有任何问题。
欢迎在此类别中随意尝试:
1 个赞