techAPJ
(Arpit Jalan)
2020 年11 月 2 日 13:44
1
我刚合并了一个功能(链接 ),该功能会在主题根据站点设置“自动关闭主题帖子数”自动关闭时,自动创建一个新的关联主题。
此功能特别适用于自动拆分和管理 超主题 。
工作原理
假设“自动关闭主题帖子数”设置为 10000 条帖子,且某个主题(标题为“自我介绍!”)刚刚达到该限制。
此时,我们将关闭该主题并创建一个新的关联主题以继续讨论。新主题的第一篇帖子将链接到所有之前的讨论(主题)。
原始主题标题将追加“第 1 部分”,新主题标题将追加“第 2 部分”。
后续的主题将遵循类似的标题命名规则。
在自动关闭的主题底部,还会有一条版主帖子,提示用户有新的主题可以继续讨论。
此功能默认启用。若要禁用该功能,只需禁用站点设置“自动关闭主题创建关联主题”。
请注意,如果禁用了“自动关闭主题帖子数”(设置为 0),此功能也将被禁用。
33 个赞
jrgong
(jrgong)
2020 年11 月 2 日 14:06
2
4 个赞
我对于这些代码行(以及我可能遗漏的其他部分)有一个小建议:
previous_topics += "- [#{topic.title}](#{topic.url})\n"
parent_topic.add_moderator_post(system_user, I18n.t('create_linked_topic.moderator_post_raw', new_title: "[#{new_topic_title}](#{new_topic.url})"))
我建议将 [title](url) 替换为仅 url,并依赖 Discourse 现有的功能,该功能会根据 URL 自动显示主题标题。如果我没记错的话,这样做还有一个额外的好处:如果主题被重命名,显示的主题标题会自动更新,我认为这会是一个不错的细节。
6 个赞
是的,这是个不错的主意 @techAPJ ,我们或许应该这样做。
另外,我们能否将其合并为一条消息,而不是两条?为什么不把“继续讨论”部分直接编辑进关闭消息中呢?例如:
此话题因回复数达到 10000 条的上限而自动关闭。请在此处继续讨论:{link}
9 个赞
riking
(Kane York)
2020 年11 月 6 日 04:25
6
当你从具有访问限制的主题继续讨论,并将讨论转移到另一个没有完全相同 访问限制的类别时,这种方法的效果就不太好了。
1 个赞
这算是一个常见的使用场景吗?看起来,持续的对话主题通常会与原始主题属于同一类别。如果这种情况确实发生,你提到效果会不佳,那么具体会表现出什么样的行为呢?
4 个赞
即使没有链接问题,我也预期延续的主题会继承完全相同 的访问限制。如果它没有继承,我会认为这是一个漏洞。
4 个赞
是的,这些观点不错,但上次我检查时类别是正确继承的,情况确实如此吗 @techAPJ ?
3 个赞
techAPJ
(Arpit Jalan)
2020 年11 月 10 日 03:34
12
您需要更新 这些键 的翻译。请参阅:Contributing translations to Discourse
这是一个有效的错误。我今天会优先修复这个问题。
codinghorror:
我上次检查时,类别是被正确继承的。
我认为那可能是一次手动更新。我没有看到为关联主题分配类别的代码。
6 个赞
@elijah 你是否希望在此继续 你的对话 ?就我个人而言,这里才是更合适的位置。
3 个赞
@elijah 看起来你是希望将旧主题中每个用户的主题通知状态 (如关注、跟踪、静音等)都复制到新主题中,对吗?
我理解其中的理由,但我担心这可能会对部分用户造成一些侵扰……较长的主题可能涉及数百甚至数千人。其他人对此有什么看法?利弊如何?
4 个赞
elijah
(Eli the Bearded)
2021 年4 月 4 日 18:37
17
是的,让我在此重申我的建议,以便提供背景。
关于大型主题,我提出了两种方法,旨在让不太经常使用的用户在分割主题时更加顺畅。
方法:关注列表复制 :在分割主题时,将新主题复制为静音/追踪/关注状态。(如果原主题仅被复制而原本未设置状态,则取消关闭主题后的追踪状态。)理由 :如果用户有一段时间未阅读该主题,但总体上仍感兴趣,此方法可帮助他们跟上进度,仅突出显示新主题中的未读帖子,而非旧主题中的内容。
方法:顶部拆分 :在分割主题时,支持将第 2 条至第 N 条帖子移至新主题(创建时即关闭),并在第 1 条帖子后复制这些帖子,同时用链接到该新主题的消息替换被移动的帖子。理由 :调整关注设置较为繁琐。此方法可在不破坏外部链接(如书签、RSS 订阅、嵌入应用等)或内部关注设置的前提下,对旧内容进行归档。
我个人更倾向于“顶部拆分”方法,但两种方法似乎都能帮助那些对非常长(或长期但已分割)主题感兴趣的用户。
3 个赞
我正在使用 WP 和 Discourse 进行音频教育和小组反思,并想知道,如果 WP 插件在 Discourse 中创建一个新主题时,是否会触发一个事件来为该主主题创建关联的反思主题,这会有多大帮助。这样一来,我就可以将原始主题设为只读,以免人们在收听音频之前看到反思内容,并将关联主题作为他们进行反思的地方。
类似于:
我是否可以认为,只需稍微调整这里的代码,就可以在新插件中实现这一点?
if SiteSetting.auto_close_topics_create_linked_topic?
# enqueue a job to create a linked topic
Jobs.enqueue_in(5.seconds, :create_linked_topic, post_id: @post.id)
end
此外,我想知道是否有足够多的自动创建关联主题的应用场景,使其成为 Discourse Automation 的一部分?
1 个赞