我需要在外部站点加载帖子,但我不知道 post_id,但我知道创建主题时配置的 external_id。
有人能公开 embed.js 逻辑中的 external_id 变量,或者告诉我我遗漏了什么吗?
需要的示例支持:
window.DiscourseEmbed = {
discourseUrl: ‘https://forums.blah.org/’,
external_id: ‘2023-4’
};
我需要在外部站点加载帖子,但我不知道 post_id,但我知道创建主题时配置的 external_id。
有人能公开 embed.js 逻辑中的 external_id 变量,或者告诉我我遗漏了什么吗?
需要的示例支持:
window.DiscourseEmbed = {
discourseUrl: ‘https://forums.blah.org/’,
external_id: ‘2023-4’
};
我假设您通过 API 创建了主题,并设置了 external_id 参数。
我不确定这是否有帮助,但 Discourse 有一个 t/external_id/:external_id 路由。它看起来只返回 JSON 数据:
所以您可以获取主题的 JSON,例如:
/t/external_id/2023-4.json
这将返回 Discourse 主题的内容和 id。但我认为这并不能解决您的问题。
我现在正在测试,确实返回了 JSON 数据,但当您发出请求时,Discourse 会自动重定向到实际的 Discourse 主题 URL。例如,对 http://localhost:4200/t/external_id/1.json 的 GET 请求会将我重定向到 http://localhost:4200/t/testing-the-external-id-param/206.json
我希望以嵌入帖子的格式呈现内容。Discourse 在这方面已经做得很好,我不想重复造轮子。
不允许按 external_id 搜索,我将不得不将论坛主题 id 存储在我的数据库中,然后通过该 id 进行搜索。当我通过 API 创建主题时,我们已经有一个存储在 external_id 中的唯一变量,所以这样做似乎是多余的。
我明白了。您想使用此处显示的脚本:https://meta.discourse.org/t/embed-discourse-comments-on-another-website-via-javascript/31963#alternate-configuration-linking-to-existing-topics-6。但您想使用 external_id 参数而不是 topicId 参数。
这也许可以作为一个功能添加。
也有可能在客户端发出请求,例如:
http://localhost:4200/t/external_id/1.json
然后从响应中提取帖子的实际 URL,并解析该 URL 以提取帖子的 id,或者向帖子的 URL 发出第二个请求以获取帖子 id。
这似乎很容易出错。
如果您在服务器端而不是客户端添加嵌入脚本,您可以直接向 http://localhost:4200/t/external_id/1.json 发出 GET 请求,执行任何您需要的操作以获取 Discourse 帖子的 id,然后使用该 id 将脚本插入到您的网页中。
这是很好的反馈,给了我一些可以思考的东西。功能请求是最直接的,但我喜欢你的一些我没想到的主意!