通过 Javascript 将 Discourse 评论嵌入到另一个网站上

我今天尝试实现这一点,但遇到了一些问题:

  • 在论坛帖子中,派生的 URL(来自 discourseEmbedUrl?)会转换为小写,这会破坏链接后文本“This is a companion discussion topic for the original entry at …”中的区分大小写的 URL。
  • 首次加载页面时,嵌入会显示“Loading discussion…”并卡住。第二次加载页面时一切正常。
  • 页面抖动:当 iframe 加载时,它会有一个默认高度,但如果没有找到评论,高度会缩小到只显示一行“Start Discussion”。这会使“loading discussion”错误变得更糟,因为它会占用很大的垂直高度。
  • 如果嵌入的父级可以优先使用 meta 标签而不是对整个页面进行文本化处理,那就更好了,我认为这更像是通用的 discourse 行为。

最大的惊喜是了解到每次访问带有嵌入的 URL 时,都会创建一个新主题。这在 OP 中:

我能想到的唯一解决方案是 hacky 的,依赖于短期 SSR/缓存来 ping 嵌入端点:

所以我想逻辑将是:

  1. 检查 $discourse/embed/info?embed_url=$link
  2. 如果主题存在,则像往常一样显示嵌入。
  3. 如果不存在,则显示一个“start conversation”按钮,链接到 $discourse/new-topic?subject=$link。

这会起作用吗,还是需要进行其他链接?