关于主题与插件的讨论,以及我提到的具体示例,这非常有帮助。谢谢。
目前,我处理变更的方式是逐一梳理 Discourse 代码的具体细节(这个对象定义在哪里?哪个模板控制它?处理该操作的逻辑位于何处?等等)。但这进展缓慢(链接)。
我认为,专注于 API可能是更高效的途径。这样,我就不必梳理成熟 Discourse 代码的所有细节,还能专注于构建主题而非插件——或者仅仅通过“自定义”仪表盘进行变更。
基本上,弄懂 API 如何运作似乎比研究 Discourse 代码库要容易得多。
继续以我提到的示例为例:如果用户是某个分类的管理员,则允许该用户在分类页面置顶话题。
我能否在不使用插件的情况下实现这一点?让我试着勾勒一下思路:
1. 用户是否是某个分类的管理员?
我目前在 API 文档中没看到任何能告诉我用户是否为某分类管理员的内容。我原本以为在获取分类的 GET 请求中会有相关信息,但并未找到。或者可能在获取用户的 GET 请求中,但那里也没有列出该用户担任管理员的分类。
我能添加这些功能吗?
或者,我是否可以在用户或分类上创建一个 custom_field 来标识管理员身份,然后在加载分类页面时通过 API 调用该自定义字段?
2. 如果用户是管理员,显示置顶按钮。
如果能解决第 1 点,我假设只需通过前端 JavaScript 和 CSS 添加该按钮,并在用户是管理员时显示即可。
3. 用户(作为管理员)点击按钮,从而置顶话题。
在 API 中,话题似乎确实具有“置顶”(pinned)属性(布尔值)。我推测这与它们在分类中的置顶状态相关,因为看起来每个话题只属于一个分类。
因此,当管理员点击“置顶”按钮时,我可能只需将话题的“置顶”状态更新为 True。如果这行不通,自定义字段也可能是解决方案(尽管我还没看到如何为话题添加自定义字段)。
因此,通过这种方式或类似方法,我似乎可以通过 API 完成这项任务;而如果使用插件,则需要在 Discourse 代码库的文件中进行大量梳理。
我的理解正确吗?