我今天尝试实现这一点,但遇到了一些问题:
- 在论坛帖子中,派生的 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 嵌入端点:
所以我想逻辑将是:
- 检查
$discourse/embed/info?embed_url=$link - 如果主题存在,则像往常一样显示嵌入。
- 如果不存在,则显示一个“start conversation”按钮,链接到
$discourse/new-topic?subject=$link。
这会起作用吗,还是需要进行其他链接?