内置的 热门排序 算法 非常简单,可能不适用于不同的使用场景。根据我对 Discourse 代码库的基本理解,目前没有面向用户的站点设置或适当的插件注入点来定制热门排序算法。有一个 topic_hot_scores_updated 事件,但它在分数更新后才被调用,这可以用于通知,但不能覆盖内置的热门分数。有两个站点设置 hot_topics_gravity 和 hot_topics_recent_days,但它们被设置为 hidden: true 并且在管理员界面中不可见。
我们正在考虑编写一个插件来替换内置的热门分数算法。从与未来升级 Discourse 的兼容性和便捷性来看,哪种方法会更好?我列出了一些想法如下:
- Monkey-patch
TopicHotScore并根据我们的自定义算法更新数据库。 - 创建一个单独的表来存储热门分数,并运行一个单独的后台作业来更新它们。为我们的自定义热门话题列表添加另一个路由(而不是 /hot)。
- 或者也许 Discourse 代码库可以改进以支持这种用例?