我正在尝试创建一个插件来实现以下功能:
- 在 composer-fields(撰写器字段)旁边有一个新的“搜索”按钮。
- 单击该按钮后,会弹出一个带有搜索表单的覆盖层。
- 搜索表单允许用户输入一些搜索词(例如,城市名称),然后触发一个使用专有图像搜索引擎(运行在我的自有 URL 下,需要 API 密钥)的搜索,以查找该城市的图像。
- 显示前 5 张图像。用户选择一张图像,覆盖层消失,图像和搜索字符串将作为草稿添加到撰写器中。用户现在可以继续撰写他们的帖子。
我的实际用例有点复杂,但这大致是我想要实现的目标。目标是简单地帮助用户更方便地创建带有图像的帖子草稿,而不是手动去搜索引擎复制图像到撰写器中来创建草稿。
我已经成功创建了一个带有新按钮的插件,并使用 composer-field 作为连接器。该按钮可以被点击并触发一个操作。但现在我卡住了。
一些问题:
- 有没有什么插件可以让我事半功倍?我曾考虑过 Pavilion wizard 插件,但我看到只有付费版本才提供 API 调用功能,而现在我判断是否值得花钱还为时过早。
- 我可以针对哪个正确的 CSS 类/div ID 来激活覆盖层?
- 有什么好的例子可以说明如何通过后端进行 API 调用?我不想将搜索引擎的 API 密钥泄露给客户端,所以必须通过后端进行。
- 我不确定插件 API 到底是什么,以及我是否需要它。(我有点难以理解到处都是文档。)
其他所有提示和建议都欢迎。
1 个赞
与此同时,我找到了一些信息丰富的资源。我真希望这些内容能在“如何编写插件”教程中更突出地展示。对于初学者来说,他们并不清楚这些资源的存在。
- Discourse 自己的 API(对编写插件没有帮助,但对初学者仍然相关):https://docs.discourse.org/
- 客户端插件 API(对编写插件的后端没有帮助,但对前端来说肯定更容易):
A versioned API for client side plugins
discourse/app/assets/javascripts/discourse/app/lib/plugin-api.gjs at main · discourse/discourse · GitHub
我还了解到后端插件 API 本质上是 Rails 或 Ruby——但并不清楚前端和后端究竟是如何相互作用的,或者后端最初的“钩子”在哪里。当然,有一个 plugin.rb 文件需要放置,但我仍然想知道是否有关于这个文件入口点的文档。也许对于 Ruby on Rails 程序员来说这很明显,但我不是其中之一,所以入门门槛很高。
renato
(Renato Atilio)
3
看起来你不需要任何后端更改。你描述的行为与我们的 “插入超链接”模态框 的工作方式非常相似——你可以搜索主题,选择一个主题作为链接添加,并在确认时将链接添加到编辑器中。
你可以将按钮添加到 插件出口,或者通过添加到初始化器中的 api.onToolbarCreate 添加到工具栏,并像我们为 “插入超链接”模态框 所做的那样打开一个模态框。它可以通过利用工具栏操作中的 toolbarEvent 对象 向编辑器中 addText(如果你需要一个出口,你也可以通过 appEvents 触发器 与编辑器进行交互)。
4 个赞
谢谢,这真的很有帮助。是的,模态框确实是我想要的:它会中断用户的流程,只有当用户完成模态框后,事情才会恢复到之前的状态。我会看看“插入超链接”模态框是如何工作的。
问题:在哪里可以找到 DModal、DButton 和其他此类 Discourse 特有对象的文档?
在这里:
另外值得注意的是:
你可以查看 Discourse/plugins/theme components 来获取示例。
4 个赞
这是另一段似乎相当重要的内容,因为它描述了前端和后端如何通过路由连接在一起:
1 个赞
更多拼图块:
API 密钥可以安全地存储在 /admin/api/keys 下。
1 个赞