如何按日期对主题的消息进行排序?

我已将一份大型旧邮件列表导入 Discourse,并在合并了多个最初未被正确识别为属于父主题的线程后发现,线程顺序出现了混乱。许多日期较早的线程消息在 Discourse 中显示在日期更早的父主题之后。

是否有方法可以重新排序线程,使其按日期从最早(原始帖子)到最新排列?

不,问题在于话题是按帖子 ID 顺序排序的。正如你所描述的,你导入帖子的顺序与它们本应创建的顺序不一致。恐怕唯一的正确解决方案是修正导入过程,确保帖子按正确的顺序导入。不过听起来,你只需要清空数据库并重新运行导入脚本即可。

(或者你也可以考虑其他“解决方案”:不在乎帖子顺序,反正这些都是旧内容,没人会去读;或者为每个话题手动删除所有现有帖子,然后按正确顺序重新创建它们。)

嗯,这些措施已经实施好几个月了。我不认为删除并重新导入是一个合适的解决方案。我在想,我们是否可以开发一个插件来实现帖子 ID 的重新排序……嗯。

哦,那太遗憾了。我想,一切皆有可能,但这将永久影响整个站点的性能。

理论上,您可以删除这些主题及其关联的自定义字段,然后重新运行脚本。在应用于生产数据之前,请务必在测试环境中进行仔细测试。

如果帖子 ID 被重新排序,我认为这不会造成永久性影响。我想另一个方案是开发一个插件,在查询时直接按日期对帖子进行排序……

没错。如果你按正确顺序删除并重新创建所有帖子,一切就会恢复正常。