こんにちは、
Discourse の最新バージョン 2.5.0 以降、サムネイルの生成に問題が発生しています。
どうやらサムネイルの生成がコア機能から行われるようになり、その結果、すべてのサムネイルが削除されてしまったようです。
復元するために様々な操作を試みましたが、以下の状況では機能しないことを説明します。
注: この変更にはおそらく正当な理由があるとは思いますが、機能の破壊となる突然の動作変更を導入する際、アップグレードガイドやこの変更へのオプトイン手段を用意せずに行うのは避けてほしいです。![]()
環境
- Discourse 2.5.0 beta4 (faeb5793ba)
- Topic List Preview プラグイン 4.4.0
- WP-Discourse: Discourse のトピック(最初の投稿)に HTML 全体をそのまま公開。
投稿内容の例(フォーマット済み):
Content
利便性のため、画像の HTML コード:
<img
width="150"
height="84"
src="https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-150x84.jpg"
class="attachment-thumbnail size-thumbnail"
alt=""
srcset="
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-150x84.jpg 150w,
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-300x169.jpg 300w,
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-1200x675.jpg 1200w,
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-1536x864.jpg 1536w,
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-2048x1152.jpg 2048w,
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-788x443.jpg 788w,
https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית.jpg 1280w
"
sizes="(max-width: 150px) 100vw, 150px"
/>
<div data-wp>
<a
href="https://www.banggood.com/Xiaomi-Redmi-Router-AC2100-2033Mbps-2_4G-5G-Dual-Band-Wireless-Router-6High-Gain-Antennas-128MB-OpenWRT-WiFi-Router-p-1614038.html"
target="_blank"
><img src="https://zuzu.deals/wp-content/uploads/2020/01/5e3128b4e5da7-150x150.jpg"/>
</a>
<div>
<div data-buy>
<a
href="https://www.banggood.com/Xiaomi-Redmi-Router-AC2100-2033Mbps-2_4G-5G-Dual-Band-Wireless-Router-6High-Gain-Antennas-128MB-OpenWRT-WiFi-Router-p-1614038.html"
target="_blank">קנייה
</a>
<span data-clipboard-text="BG38b2ac" data-coupon>BG38b2ac</span><i></i>
</div>
<div data-price>$43.99</div>
</div>
</div>
<hr />
<p>
<small>
פורסם ב: <a href="https://zuzu.deals/%d7%a7%d7%95%d7%a4%d7%95%d7%9f-%d7%91%d7%9c%d7%a2%d7%93%d7%99-%d7%a8%d7%90%d7%95%d7%98%d7%a8-%d7%97%d7%96%d7%a7-%d7%95%d7%97%d7%93%d7%a9-%d7%a9%d7%9c-%d7%a9%d7%99%d7%90%d7%95%d7%9e%d7%99-xiaomi-re-2/"></a>
</small>
</p>
<br />
<p>נעים להכיר!</p>
Discourse アップデート前
TLP は、トピックの作成時でも編集時でも、外部画像に対して常に正常に動作していました。
ただし、マークダウンの問題により、「リモート画像をローカルにダウンロード」オプションは無効にしていました。
マークダウンのレンダリング問題
これは主要な問題ではありませんが、Discourse アップグレード後も発生しています。以下に説明します。
Discourse が画像の HTML をマークダウン構文に置き換えてダウンロードする場合、私たちの環境では以下のようになります:
[...]<a href="<link_here>" target="_blank"></a>[...]
この場合、Discourse は画像をレンダリングできません。
Image

この問題を修正するには、少なくとも上記に空行が必要です:
[...]<a href="<link_here>" target="_blank">
</a>[...]
HTML に囲まれたマークダウン画像のレンダリングを許可することは可能でしょうか?
Discourse アップデート後
- すべてのサムネイルが削除されました。
- トピックの内容内ではすべての画像が正常に表示されています。
- この機能のため (https://github.com/discourse/discourse/commit/03818e642a1ae871bffdc0c39c10f05f0b8b0398、と思います)、外部リンクからのサムネイル取得が不可能になったため、「リモート画像をローカルにダウンロード」オプションを有効にせざるを得なくなりました…

- 「リモート画像の最大日数」は最大値の 10000 に設定されています。
これにより、画像をダウンロードするためにすべての投稿をリベイク(再構築)するように指示されました。そしてここから奇妙なことが始まります。
rake posts:rebakeはあまり効果がありませんでした(少なくともトピックの最初の投稿には効果がありましたが、多くのPullHotlinkedImagesがトリガーされました)。
1.1. いくつかのトピックを確認したところ、classやsrcset属性を持つ画像 HTML が原因ではないかと考え、以下のコードで画像を正規化しようと試みました(Ruby は知りません)-- 一部のトピックでは効果がありました。
1.2. ただし、マークダウンの問題により、改行を追加して修正する必要がありました – 少なくともこれらのトピックではサムネイルが機能しました。
Code
Post.where(post_number: 1)
.where("raw LIKE '%<img%/>%'")
.each
do |post|
post.raw.gsub!(/<img[^>]+(src="[^"]+")[^>]+\/>/, "<img \\1 /")
post.save!(validate: true)
post.rebake!
end
Post
.where(post_number: 1)
.where("raw LIKE '%upload://%'").each
do |post|
post.raw.gsub!(/(!\[.*upload:\/\/.*\))/, "\n\n\\1")
post.save!(validate: false);
post.rebake!
end
- 無視されたトピックを手動で編集(内容を変更せず保存のみ)すると、ほとんどの場合機能します。画像がダウンロードされます。
2.1. 編集後でも無視されたままのトピックがあります。PullHotlinkedImagesがトリガーされているのが確認できますが、画像はダウンロードされません(例: この HTML<img src="https://zuzu.reviews/wp-content/uploads/2020/05/HiZERO-VS-BISSEL-VS-שואב-אלחוטי-VS-שואב-רובוטי-VS-מגב-ודלי-VS-מטאטא-VS-ספונגה-חשמלית-150x84.jpg" />、リンク)。 - 正規化後、編集で画像がダウンロードされることを確認し、
rake posts:rebakeを複数回試行しましたが – 効果はありませんでした。 - 次に、rails コンソールを使用して上記のコードと似ていますが、特定のトピック ID を指定し、
post.rebake!のみを実行しました – 効果はありませんでした。 - トピック内のすべての画像が常にダウンロードされるわけではありません。
- @Canapin さんから Download remote images from older posts? - #3 by vinothkannans を指摘されました;現在すべての投稿をリベイクしようとしています。-- 残念ながら効果はありませんでした。
なぜ一部の画像は機能し、他の画像は機能しないのか、単に狂っています。基準の問題だとは思いません。画像の設定は十分に高いです。背後にあるロジックが全く理解できません。ランダムに見えるだけです。
現在、まだ多くのサムネイルが欠落しています。おそらく大部分は編集/保存で手動で修正できるかもしれませんが、それは現実的ではありません。私はクライアントのためにこれをやっており、すでに問題の修正に多くの時間を費やしてしまいました。
サムネイルとしてアップロードされた画像でも構いませんが:
- 画像がダウンロードされない具体的な理由があれば教えてください。役立つ設定はありますか?何か必要なものはありますか?デバッグ方法は?
- コンソールを通じて編集/保存と同様に、ダウンロードを強制する方法はありますか?
- HTML に囲まれた場合でもマークダウン画像のレンダリングを許可できますか?
問題の説明が十分に正確であることを願っています。
お手数ですが、あらゆる助けと解決策を事前に感謝します。







(システムが画像をマークダウンに置換)