mattdm
(Matthew Miller)
1
这是来自我们社区博客的 Fedora 项目讨论站点上的一篇帖子片段:
<p>请告诉我们您的想法。既然现在有了搜索引擎字段,您会将其用作主页吗?您认为我们还能如何进一步改进它?</p> <p class="has-text-align-center">或者</p> <p>如果您想查看更多内容,请查看 <a href="https://discussion.fedoraproject.org/t/how-do-you-feel-about-the-new-design-of-start-fedoraproject-org-page/28689">Figma 上的草稿</a>。</p>
看到那些 Markdown 图片行实际上并没有在新行开始了吗?这导致图片无法显示。如果我编辑消息并在每个 ![] 之前添加一个回车符,图片就能正常显示。
我们能否通过更改设置来解决这个问题?还是这只是插件中的一个错误?
angus
(Angus McLeod)
2
嘿 @mattdm,
如果它们已公开发布,能否分享原始 WP 帖子和带有摘要的 Discourse 帖子的链接?
WP Discourse 插件本质上只是将 WP 帖子中发现的任何 HTML 传递给 Discourse,然后 Discourse 会对其进行处理以包含在 Discourse 帖子中。因此,WP 帖子在 Discourse 中的 HTML 片段如何显示,取决于两件事:
- WP 中 HTML 的原始结构(例如)
- Discourse 的 Markdown 解析器如何解析 HTML 以在 Discourse 帖子中显示(例如)。
所以,这要么是 WP HTML 结构问题,这基本上超出了 WP Discourse 或 Discourse 本身的范围,要么很大程度上是关于 HTML 解析器应该如何运作的观点问题,尽管有时在这方面确实可以做出明显的改进。
话虽如此,有时深入探讨解析细节也是有益的。因此,如果你有关于 WP 帖子 HTML 结构的更多细节,请分享,我会进一步调查 
simonk
(Simon King)
3
我在这个由 RSS 轮询插件(不是 WordPress 插件)创建的 Discourse 帖子中遇到过类似的问题:
第一行中的 ™ 实际上是一个 HTML <img> 标签,RSS 插件确实正确地将其带过来了。然而,当 Discourse 执行“下载图片本地副本”步骤时,该帖子就出错了:
1 个赞
angus
(Angus McLeod)
5
@simonk 感谢您提供的有用调查。您两位都可以通过在站点设置中输入您的 WordPress 域名到“禁用的图片下载域名”字段来解决此问题。
如果您希望更深入地研究该问题,即以某种自动化方式处理,那么 @mattdm 的情况与您的情况之间的差异正说明了其中的复杂性。他期望浏览器对 HTML <p> 和 <img> 元素的处理方式能体现为 Markdown 中的换行符,而您期望的则几乎(但并非完全)相反,即图片仍应以内联方式显示,并保持与原始 HTML 中现有 <img> 元素相同的尺寸。
关于此问题的更多相关信息,您可以查看现有的相关帖子,例如:
2 个赞
mattdm
(Matthew Miller)
6
感谢 @simonk —— 没错,正是这样。
@angus,这样做会有什么后果?是完全不显示图片,还是图片会交叉链接到 WordPress 站点上的原始图片?
mattdm
(Matthew Miller)
7
不过,我希望我们都能同意,任何导致 Discourse 显示原始 Markdown 而非渲染它的行为都绝对是不正确的——尤其是当该 Markdown 是由插件生成的时候。我是不是漏掉了什么?
angus
(Angus McLeod)
8
图片将直接热链接到原始图片。
抱歉,我有点困惑。我以为你担心的是换行问题?你的意思是发布后的版本(即你只是阅读而非编辑时)包含原始 Markdown,这是你的顾虑吗?
该插件仅发送原始 HTML。Markdown 是在 Discourse 处理帖子时生成的。
尝试一下 禁用图片下载域名 功能,看看效果如何。
mattdm
(Matthew Miller)
9
正是由于缺少换行符,当 Discourse 向用户(而非编辑者)显示页面时,它不会在出现  的地方显示图片,而是直接显示这段文本。必须有人工介入,在帖子自动发布后对其进行编辑,并在每个图片实例前添加换行符,它们才能正常显示。
mattdm
(Matthew Miller)
10
我可以这么做,但我更希望图片能被下载下来——如果其他网站宕机、博客内容变更等情况发生时,这确实是个不错的功能。而且我们离托管容量上限还远得很,所以不用担心存储空间的问题。
angus
(Angus McLeod)
11
我明白了,谢谢澄清。老实说,鉴于我在上方链接的主题中讨论的原因,这种情况短期内不太可能改变。例如:
对我们来说,关键是保持内容的完整性,因此换行符方案可能不会实施。
问题在于,如果你试图自动修正你所描述的问题,可能会引发其他问题。目前的解决方案是将你的 WordPress 域名添加到 禁用图片下载域名 站点设置中。
编辑 我在这方面提出了一个小建议,但这只是推测性的,我要再次强调,目前的解决方案是为你的 WordPress 域名禁用图片下载。
mattdm
(Matthew Miller)
12
我实在无法理解这里的核心问题。当前的行为是如何保证内容完整性的?显然并没有。
看起来,如果你打算用 Markdown 替换 HTML,那么将其替换为能正确渲染的 Markdown 是唯一的正确做法。
我们在 WordPress 端并没有做什么特别复杂的事情——只是使用了标准的区块编辑器,用户也以常规方式添加图片。
我会先尝试启用“禁用图片下载”设置,看看是否有帮助,但我真的非常希望这个问题能直接得到解决。
angus
(Angus McLeod)
13
我理解你的立场,也并非认为那样不理想。但让一个以 Markdown 驱动的讨论引擎同时成为一个完美的 HTML 渲染引擎,绝非易事,即使个别案例表面上看起来很简单(例如,只需添加一个新行)。
在 Discourse 中能够完整渲染博客文章的 HTML 确实是一个不错的功能,但归根结底,这只是一个专注于 Markdown 格式讨论的系统中的众多功能之一。
如果你关注我所链接的讨论(包括 David 最近的帖子),你会发现我们在此问题上有一些可行的方向。其中一种方案或许能奏效,并解决这一特定情况。如果存在更简单的解决方案,我肯定会向 Discourse 提交 PR 来解决它。
如果你在使用禁用图片下载功能时遇到问题,请告诉我,我会与你协作解决。一旦我们在技术层面找到可行的推进路径,我会及时告知你。
2 个赞