不存在的远程图像的占位符

您好,

我已将 80,000 篇帖子从 phpBB 导入到 Discourse。帖子中有许多图片链接自外部网站,例如 [img]http://www.domain.tld/image.jpg[/img],但这些图片已不存在。

帖子中不显示任何内容,这会引起用户不满,因为在某些帖子中,上下文会中断,用户不清楚在一个文本块和下一个文本块之间存在/曾经存在一张图片。

所以我的问题是:如果原始图片不再可用,是否可以在那里显示一个占位符图片?

此致,
Roi

它是否显示默认的代理商图片图标?我认为在帖子生成后应该会显示。

我自定义了我的。请看(包含代码):

1 个赞

不,它什么也不显示。但我越来越接近了。我认为这是由 BBCode 标签引起的。如果我编辑帖子并删除该标签,它看起来像这样

那么我需要删除所有 [img] BBCode 标签并重新烘焙帖子吗?

这看起来很有趣。我认为我也需要它。 :slight_smile: 谢谢!

我不确定。如果你移除一个内联 BBCode 标签,那么你的文本中就会留下纯文本的图片 URL,并且不会显示损坏的图片图标。

也许你可以尝试移除 BBCode 标签,但在图片 URL 前后插入一个空行。请先进行备份!

是的。该死,你可能是对的。

那么,我需要更改什么才能显示损坏的图片图标——或者远程图片(我猜是下载的),如果它仍然存在的话?

我不确定。
我也应该遇到过这个问题,因为我也导入了一个带有 [IMG] 标签的 phpBB 论坛,并且 95% 的图片都损坏了,但据我回忆,在“烘焙”之后,即使是内联的损坏图片也能被正确替换为损坏图片的图标,不过我也许记错了 :thinking:
恐怕我现在没有现成的解决方案,但我确信有办法解决。
您碰巧有包含损坏的内联图片的帖子的链接吗?您能否也复制粘贴原始文本?

1 个赞

当然,这是一个实时示例:

如果您查看第一条帖子,在最后一行文本和签名下方有一个很大的空白区域。在源代码中,您可以看到损坏的图像,例如:

<p><img src="http://www.grillen-darf-nicht-gesund-sein.de/gfx/beef-buddies-2008_initiative.jpg" alt="" role="presentation" loading="lazy"></p>

来自数据库的“原始”文本:

[img]http://www.grillen-darf-nicht-gesund-sein.de/gfx/beef-buddies-2008_initiative.jpg[/img]

来自数据库的“已处理”文本:

<p><img src="http://www.grillen-darf-nicht-gesund-sein.de/gfx/beef-buddies-2008_initiative.jpg" alt="" role="presentation"></p>

您是否启用了将远程图片下载到本地设置?仅当 Discourse 尝试下载远程图片但失败后,才会出现损坏的图片图标。

如果禁用了该设置,则会留下一条空行。

是的,它已启用。一直都是,甚至在我从 phpBB 导入之前。\n\nphpBB 导入器是否会忽略此设置?根据我的理解,烹饪(recooking)应该在导入器之外进行,并使用设置。\n\n重新烹饪所有帖子会造成任何损害吗?

我尝试了:

rake posts:rebake_match["[img]"]
      767 / 767 (100.0%)
767 个帖子已完成!

我上面提到的帖子(以及看起来像所有其他帖子)看起来完全一样……

我認為在 /var/discourse/shared/standalone/import/settings.yml 中有一個設定,我們可以將遠端圖片下載設為 true 或 false,但貼文無論是否設定此選項都會在匯入後進行烘焙。

我看到您的空行現在顯示預期的損壞圖片圖示:
\u003chttps://forum.gdngs.de/t/grill-shirts-von-3dsupply-de/5515\u003e

與其重新烘焙大量貼文,不如透過貼文管理選項重建特定貼文的 HTML,這是一個很好的測試方法,因為它會觸發重新烘焙:

chrome_RLLvokErfg

然後透過將其加入佇列來觸發 UpdateHotlinkedRaw 工作:

我在我的測試執行個體上嘗試使用您的一張損壞圖片並在 BBcode 中進行測試。當「將遠端圖片下載到本機」被禁用時,空行仍然存在。當它被啟用時,則出現損壞圖片圖示。

1 个赞

哦,是的,你说得对。我认为那是在重新烘焙命令后出现的浏览器缓存问题。感谢你亲自检查! :slight_smile:

所以这不知何故是一个 phpBB 导入问题。我发誓我并没有在从 phpBB 导入所有内容 之后 更改任何与远程图片相关的配置设置……

啊,太好了。我找到了它并点击了它。

我在 Sidekiq 中找不到任何 UpdateHotlinkedRaw 作业……你能帮我解决这个问题吗。我确信这不知何故是 PEBCAK。 :wink:

这似乎表明我在从 phpBB 导入所有内容 之后 启用了“将远程图片下载到本地”。嗯……由于我也有/有一个测试安装并且在那里测试了很多东西,我仍然很确定它在之前就已经开启了。

注意:该作业将在几分钟后触发,进入 Sidekiq 只是为了更快地检查。

在重建帖子 HTML 后几秒钟,该 UpdateHotlinkedRaw 作业应该会出现在 Sidekiq 的“计划”选项卡中。

只有在 Discourse 论坛设置中启用了将远程图像下载到本地设置,并且您的帖子包含图像时,才能看到该作业。

如果那也不行,那我暂时没有其他想法了……!

谢谢,这样就清楚了。我刚刚重新烘焙了一个帖子——一个没有远程图片的帖子。所以什么也没发生。 :wink:

而且谢谢你,你帮我在这里理清了事情。我现在看到占位符图片了。我最有可能用你在这里链接的 CSS 技巧替换占位符图片。

1 个赞