如何在 discourse.org 上托管的主题列表下添加嵌套的主题帖子?即主题列表作为feed

大家好,

本周我们开始了自定义 Discourse 主题的第一个冲刺。由于我们的设计方案与 Discourse 原生主题差异较大,我们预计需要修改相当数量的文件。

我们的方法非常简单:尽量仅通过 SASS 实现所需效果,必要时再覆盖相应的 .hbs/.hbr 模板文件。我们清楚,后者会带来额外的维护风险(如果传递给视图的属性被重命名或移除,我们的模板就会失效)。我们权衡了这种风险与自行维护基础设施的利弊,最终认为托管在 discourse.org 能为我们的非营利客户带来更大价值。我们将为网站添加一些监控代码,并制定应对方案;即便出现问题,我们也认为这通常很容易修复。

接下来进入正题。我们需要弄清楚如何将“主题列表”视图转变为类似信息流的体验,即:在每个主题下方,将回复帖子渲染为评论。

这是我们需要实现的效果示意图(目前每个主题仅显示 1 条评论,但有时我们需要显示更多):

目前进展

@iainbamboo 已深入调研,试图厘清以下问题:

  1. 主题列表中是否已包含帖子数据,我们只需修改模板即可?→ 答案是否定的。
  2. 如何将每个主题的帖子数据添加到列表中,以便在模板中渲染?
    1. 这是否是正确的做法?
    2. 我们是否应修改 Ruby 代码,将数据添加到发送的模型中(可能通过插件实现),参考思路如下:Discourse Timeline。如果我们创建插件,能否在 discourse.org 上使用?
    3. 是否可以从 Ember 端获取数据,但需承担因多次 AJAX 请求导致加载变慢的代价(存在触发速率限制的风险)?
    4. 是否可以在不修改 Ruby 代码的情况下实现此功能?

经过大量查阅——阅读 Discourse 开发指南并浏览源代码后,我们得出结论:需要专家就最佳实现方案提供建议。

现在,我们在这里 :slight_smile:

如果你尝试在前端主题中实现此功能,可能会遇到各种性能和速率限制问题……也许有更熟悉后端的朋友能补充一下,但我认为你肯定需要开发一个插件。

8 个赞