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

我认为现在这已经可以实现。embed_url 属性可以在首次创建主题时设置。我们的 WordPress 插件就是这样做的:wp-discourse/lib/discourse-publish.php at main · discourse/wp-discourse · GitHub API 更新 embed_url 属性。

3 个赞

太棒了!看来 API 文档需要更新了!

要将该属性添加到更新 API 方法中需要做些什么?这将使我能够彻底解决这个问题。

4 个赞

您好,我一直在努力使用此方法将我的博客帖子与论坛帖子关联起来。我似乎遇到了与其他一些用户在此处遇到的 iframe 内容安全策略类似的问题。我的博客由 Jekyll 生成,由 GitHub 托管,我的 Discourse 由 Digital Ocean 托管。它们的地址分别是 blendertube . com 和 forum.blendertube . com。

这是我的浏览器报告的错误:

因祖先违反了以下内容安全策略指令:“frame-ancestors ‘self’ blendertube.com”,拒绝嵌入“forum.blendertube.com/”。

这与我的 Discourse 实例的 SSL 有关吗?

以下是一些截图:

希望大家能帮帮忙。谢谢!

1 个赞

这是另一张截图:

1 个赞

有人知道用 WordPress WooCommerce 产品页面的 URL 替换“current_page.url”的语法吗?我们希望这样做,这样就无需为每个页面自定义代码,并且可以轻松地将其应用于所有页面。

我尝试替换 discourseEmbedUrl 的自有域名值:'http://eviltrout.com<%= current_page.url %>,但这在 WP 上不起作用。

1 个赞

我认为我们可能需要新的 noindex, indexifembedded 标签

编辑 @codinghorror 认为这个想法很好,因为它曾用于类似的用例(嵌入主题)

2 个赞

我无法弄清楚以下情况是否/如何可能:

当 discourse 实例的默认主题为深色时,嵌入式主题如何能为浅色

如果我的浏览器没有出问题,看起来 @codinghorror 的实现就是这样的。这是如何优雅地完成的?:smiley:

2 个赞

请注意,如果以后有人尝试此方法,当尝试将主题直接嵌入到相应的 Thinkific LMS 课程中时,discourseEmbedUrl 对我不起作用,但 topicId 方法有效。

1 个赞

我曾将此功能用于在我们 博客 中嵌入 Discourse 评论。最初一切都运行正常。我最近注意到,较新的博客(<1 年 :rofl:)似乎存在一些问题,其中 slug 未按 案例生成,导致 超链接 不正确。

Slug 生成方法设置为 ascii,允许的主机设置为 www.gyandhan.com

<script type="text/javascript">
  DiscourseEmbed = { discourseUrl: 'https://discussions.gyandhan.com/',
                     discourseEmbedUrl: '<%= request.original_url.split('?').first %>' };

  (function() {
    var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
    d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
  })();
</script>

重申显而易见的一点是,我注意到的问题是嵌入创建的主题既没有 slug 也没有标题。我仍然不确定为什么会遇到这个问题。

1 个赞

大家好,如果这是个愚蠢的问题,我很抱歉——

据我所见,嵌入式体验只允许阅读帖子中的某些帖子,而不能在网站内与之互动,对吗?当你试图加载更多评论/回复或点击个人资料时,它会把你带回 Discourse。

是否有完全存在于第三方网站(而不是 Discourse)上的嵌入式体验版本?

当我的网站在深色和浅色模式之间切换时,我该如何通知嵌入部分切换颜色模式?

我将嵌入允许的主机配置如下:


但是,当我尝试为 iframe 的 body 添加类时,我发现 iframe.contentDocument 为 null,并且如果使用 document.getElementById("discourse-embed-frame").contentWindow.document,则会出现如下错误:
image

我该如何提供一个特定的字符串嵌入到站点中,以便 Discourse 使用它作为创建帖子的标题(或至少是 slug)?我嵌入的 URL 格式为 example.com/12345,其中包含文本内容,而帖子最终会使用内容中的词语,但我希望使用“12345”。

它没有从文档中读取 <title> 标签吗?

嗯,那倒是说得通。我的标题比“12345”更花哨,而且可能会随着时间而改变,而“12345”则会保持稳定。这就是为什么我想使用那个。

我进行了一些测试:抓取器确实获取了 <title>text</title>。将其设置为 <title>12345</title>,并使用 HTML 文档底部的 <script>document.title = "fancy title";</script> 为人类客户端覆盖它,效果很好。创建的线程使用“12345”作为标题和 slug URL,而人类在嵌入发生的页面上看到一个漂亮的标题。

感谢提示!

2 个赞

大家好,

我想知道是否可以通过 #标签 来获取任何主题的帖子?
例如,在主(非 Discourse)网站上,我们有一个页面,其名称为“我的节目”(/myshow)。

同样,在我们的 Discourse 实例中,有很多关于“这个节目”的主题,它们都有相同的标签 #theshow,人们可以根据季节或活动进行导航。

这个想法是能够获取带有 #theshow 标签的所有主题的最新帖子。是否可以这样做?

我们最接近的功能是获取特定标签下按活动排序的所有主题,请查看 Embedding a list of Discourse Topics in another site

2 个赞

如何防止在嵌入式评论中出现像 Jeff 的博客那样的第一条帖子?

编辑: 我正在使用 arivanandan/discourse-embed-complete: 在嵌入 discourse 时包含第一条帖子 :slightly_smiling_face:

如果我想在一个页面中嵌入多个主题的评论,该如何操作?