帖子已拆分为新主题:使用 external_id 嵌入 Discourse
对于文档站点用例(成百上千个页面),是否可以不让 Discourse 在用户访问页面时生成主题,而是等到他们想要发表评论时再生成,就像 Giscus 的工作方式一样?
现在是“允许列表”
现在是“用于创建主题的用户名”。
除此之外,是否可以从 http://localhost 测试集成?由于缺少 https,我在控制台中收到此错误:
由于祖先违反了以下内容安全策略指令:“frame-ancestors ‘self’ https://localhost:3000”,因此拒绝嵌入“https://forum.weaviate.io/”。
您好!感谢您的反馈。我已更新指南中的部分内容,但可能需要深入审查以确保其已正确更新并正常运行。
除此之外,是否有一个方法可以从 http://localhost 进行集成测试?
您可能需要使用类似 ngrok 的服务。
编辑:事实证明,对嵌入式 URL 使用 url_escape(因为我使用 Liquid 自动插入正确的 URL)会破坏嵌入。糟糕 ![]()
嘿!我原本计划使用论坛软件来兼作我博客的评论区,所以当我发现你们不仅有方法可以做到这一点,而且它还实时运行在别人的网站上时,我简直惊呆了 ![]()
但是,在尝试在我的网站上实施此系统时,我的网站上显示了一个错误消息,并且在我的论坛错误日志中出现了这个:
错误消息
Message (2 copies reported)
Addressable::URI::InvalidURIError (Cannot assemble URI string with ambiguous path: 'https://eleboog.com/posts/jekyll-to-gemini/')
lib/url_helper.rb:157:in `normalize_with_addressable'
lib/url_helper.rb:94:in `normalized_encode'
app/models/embeddable_host.rb:50:in `url_allowed?'
app/controllers/embed_controller.rb:84:in `comments'
app/controllers/application_controller.rb:418:in `block in with_resolved_locale'
app/controllers/application_controller.rb:418:in `with_resolved_locale'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:369:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
lib/middleware/request_tracker.rb:228:in `call'
Backtrace
addressable (2.8.4) lib/addressable/uri.rb:2337:in `to_s'
addressable (2.8.4) lib/addressable/uri.rb:856:in `initialize'
addressable (2.8.4) lib/addressable/uri.rb:697:in `new'
addressable (2.8.4) lib/addressable/uri.rb:697:in `normalized_encode'
lib/url_helper.rb:157:in `normalize_with_addressable'
lib/url_helper.rb:94:in `normalized_encode'
app/models/embeddable_host.rb:50:in `url_allowed?'
app/controllers/embed_controller.rb:84:in `comments'
actionpack (7.0.4.3) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (7.0.4.3) lib/abstract_controller/base.rb:215:in `process_action'
Env
HTTP HOSTS: forums.eleboog.com
我正在使用 Jekyll 来托管我的博客,并使用 nginx 虚拟主机与它一起托管我的论坛。我将 eleboog.com 设为允许的主机,并将 /posts/.* 作为我的路径白名单。有什么关于可能导致此问题的想法吗?非常感谢!
我卡在中间,但经过一些修改后我明白了。我正在使用我的 Ghost 博客和 Discourse。
这是我为所有帖子添加到 post.hbs 文件中的内容。
{{#post}}
<div>
<div>
{{> "comments"}}
{{!-- {{#has tag="25"}} --}}
<div id='discourse-comments'></div>
<meta name='discourse-username' content='eviltrout'>
<script type="text/javascript">
DiscourseEmbed = {
discourseUrl: 'https://discourse-1-0.cloudclusters.net/',
discourseEmbedUrl : 'https://www.mydomain.com{{ post.url }}',
discourseReferrerPolicy: 'strict-origin-when-cross-origin'
//topicId: '25'
};
(function () {
console.log("DiscourseEmbed", DiscourseEmbed);
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>
{{!-- {{/has}} --}}
</div>
</div>
{{/post}}
</div>
</section>
Ghost post.hbs 文件代码粘贴在注释下:Screenshot by Lightshot
这是我的嵌入设置:Screenshot by Lightshot
=====
我得到了第一个评论被列出(Lightshot — screenshot tool for Mac & Win
我该如何删除它。
Discourse 主题中没有发布帖子,只有原始帖子的链接:Screenshot by Lightshot
有人知道我该如何将我博客的内容发布到这个主题中吗?就像 OP 一样。
当它一直显示“正在加载讨论”时该怎么办?
尝试打开浏览器的 Web 检查器到其控制台选项卡,看看是否有任何错误。如果您在此处发布错误,有人可能会提供帮助。
另外,尝试打开浏览器的 Web 检查器到其元素选项卡,并搜索“discourse-comments”。这应该会突出显示标记中的一个元素。在 <div> id="discourse-comments"> 元素正下方,应该有一个 <script> 标签。查看该标签的内容是否有明显的错误。
也许首先要检查的是,确保您在 Discourse 上为域配置的 Host 记录正在发布到公共类别。
如果您尝试发布到受保护的类别,或者发布到需要用户登录才能查看内容的 Discourse 站点,您很可能会遇到错误。
大家好!有几个问题:
-
有没有人知道为什么每次我点击“保存嵌入设置”后,“导入的主题在有回复之前将不被列出”的选项都会自动重新激活,即使我已经取消了选择?
-
在 Chrome 中查看博客文章时,我看到嵌入的 Discourse 评论本应显示的位置出现了以下内容:
而在 Safari 中,这个位置只有一个空白/白色块,没有任何消息。
在测试时,我在这两个浏览器中都登录了 Discourse 安装。博客的域名与 Discourse 安装的域名不同。
提前感谢!
有什么办法能解决“导入的主题在有回复之前将处于未列出状态”这个选项每次点击“保存嵌入设置”时都会自动重新激活的问题吗?
我不知道为什么会发生这种情况。如果转到你的站点设置页面并更改 embed unlisted 站点设置的值,会发生什么?
该设置和“导入的主题将处于未列出状态……”设置应该相互镜像。
在 Chrome 浏览器中查看博客文章时,我看到嵌入的 Discourse 评论本应显示的位置出现了以下内容:
测试时,我在两个浏览器中都登录了 Discourse 安装。博客的域名与 Discourse 的域名不同。
只要你没有将主题嵌入到私有 Discourse 类别中,博客域名与 Discourse 域名不同就不会造成问题。
我在该博客文章 (Break Out Of Your Workout Rut With 8 AMRAP Fitness Challenges) 中看到的错误是:
Refused to frame 'https://community.irla.co/' because an ancestor violates the following Content Security Policy directive: "frame-ancestors 'self' https://antsylabs.com https://antsylabs.com".
你的 Discourse 站点上的主机记录是否设置了完整的域名(包括 www)?看起来你可能只添加了 antsylabs.com 到该设置中。
我不知道为什么会这样。如果你去你的网站设置页面并将
embed unlisted网站设置的值更改为…会发生什么?
这就是问题所在,谢谢!
你的 Discourse 网站上的 Host 记录是否设置了完整的域名(包括
www)?看起来你可能只在那个设置中添加了antsylabs.com。
你说得对。我省略了这个记录中的“www”,将其添加到 Host 记录中可以完美显示嵌入式评论。
非常感谢你的帮助!我真的很感激。
是否可以按时间倒序(最新的在前,最旧的在后)显示嵌入式评论?
是否可以按时间倒序显示嵌入式评论?
目前还无法实现。如果嵌入式评论能提供一些用户可选的过滤选项,例如“全部”、“最近”、“最佳”,那就太好了。
爬虫程序是否无法处理德语的变音符号,例如 Ä、Ö、Ü?
像“Ich würde”这样的标题会变成“Ich würde”。
我有一些问题,希望有人能帮帮我。
我正在尝试在一个具有静态导出的 NextJS 网站上嵌入评论。也就是说,当网站上线时,所有页面都已预先生成。因此,尽管我看到其他地方有关于 discourse 无法抓取 SPA 的说法,但我的理解是,它应该能够处理我的网站。
假设我的论坛在 forum.domain.com,而我想要嵌入评论的网站在 site.domain.com。我们已经添加了所有与评论相关的脚本,并在 iframe 中看到一个永恒的“正在加载讨论”。
如果我从 Safari 打开,我在控制台中看到以下错误:
无法将消息发布到 https://forum.domain.com。接收者源为 https://site.domain.com。
这似乎是一个 CORS 问题,但我已将 site.domain.com 和 www.site.domain.com 添加到我的 Discourse 实例的嵌入设置中。
出于某种原因,我在 Firefox 控制台中没有看到该错误,只看到
最后,如果我访问 https://forum.domain.coom/embed/comments?embed_url=https%3A%2F%2Fsite.domain.com%2Fpath%2Fto%2Fpage,我也会看到永恒的“正在加载讨论”。这让我认为问题出在 Discourse 端,而不是我的网站。除非我误解了嵌入的工作方式,所以如果有人有任何建议,我将不胜感激。
有趣的是,这可能有关联,我已在两种类型的页面上添加了嵌入:site.domain.com/path/to/page 和 site.domain.com/longer/path/to/page,并且我没有将评论标签添加到主页。但在我的 discourse 中,我看到了一个专门针对 site.domain.com 主页的主题,不知何故,它似乎在每次用户访问网站时都会更新。

所以现在它有大量的编辑。嵌入文本的一部分包含一个电子邮件地址,在 discourse 中显示为 [email protected],并且所有编辑都显示为修改该部分。
你好!
我想听听你对这个“bug”的看法:“Embed: dates are not localized - #9 by weber-s
是否有必要添加一个日期本地化设置?因为目前它是英文的,而且没有自定义的可能性。
当用户在另一页面嵌入的帖子中分享图片/截图时,会显得不美观。
有什么好的方法可以隐藏嵌入到其他网站的帖子中的图片吗?
主题中有一个专用的 CSS 选项卡用于此功能,因此使用 CSS 隐藏帖子正文中的图片是实现此目的的最快方法。







