本指南解释了如何在 Discourse 中配置和排查 onebox。它涵盖了管理员设置、onebox 的工作原理以及解决常见问题的步骤。
所需用户级别:管理员
Onebox 是用户可以在帖子中创建的富链接预览。虽然用户可以轻松生成这些预览,但站点管理员拥有额外的控制权,并且在链接无法按预期预览时可能需要进行排查。
管理员配置
要管理 onebox 设置:
- 转到“管理员”面板
- 导航到“站点设置”部分
- 搜索“onebox”
您将看到一个与 onebox 相关的设置列表:
一些值得注意的设置包括:
post onebox maxlength:控制 onebox 中包含的文本量enable inline onebox on all domains:启用内联 onebox,将纯文本 URL 转换为链接标题(例如,https://en.wikipedia.org/wiki/Fun_(band)变为“Fun (band) - Wikipedia”)blocked onebox domains:允许您为特定域禁用 oneboxOnebox 的工作原理
当链接包含在帖子中时,Discourse 会访问目标页面并查找 Open Graph 或 oEmbed 标签,包括:
- 站点地址
- 标题
- 精选图片
- 站点图标(或 favicon)
- 描述(必需)
- 产品价格(如果相关)
Discourse 要求 description 标签必须存在,并且包含足够的文本来总结页面。否则,目标链接将无法 onebox。
以下是
https://discourse.org/的 onebox 示例,显示了站点标题、精选图片、图标和描述:排查
如果 onebox 未按预期工作,请尝试以下步骤:
使用 iFramely 测试站点:
- 粘贴链接并检查它是否使用了正确的 OpenGraph 或 oEmbed 元标签
- 确保 description 文本存在且足够
检查 onebox 请求是否被阻止:
- 某些主机可能会阻止“未知”用户代理
- 验证目标网站是否未阻止 Discourse 的用户代理
对于未显示为 onebox 的内部链接:
- 确保链接不在安全类别中
- 出于安全原因,内部链接仅在公共类别或同一类别内 onebox
从 rails 控制台,您可以通过调用 这些方法 来显式使 onebox 失效/获取 onebox,方法如下:
[1] pry(main)> Oneboxer.invalidate(url) => 0 [2] pry(main)> Oneboxer.onebox(url) => "<aside class=\"onebox …(elided)" [3] pry(main)> InlineOneboxer.invalidate(url) => 0 [4] pry(main)> InlineOneboxer.onebox(url) => "<aside class=\"onebox …(elided)"附加资源
2 个赞
这是一个很好的资源,但似乎还不够。
我这样做了,它返回了一个框,内容不多,但看起来比简单的 URL 链接要好。
假设内容不足是导致我的网站无法生成单框预览的原因,该如何解决?
我没有看到一个可以为内容不足的网站生成单框预览的设置,那么是否可以联系网站管理员让他们进行更改?需要询问什么?
这有助于解决无法生成单框预览的问题吗?
2 个赞
