Roi
1
こんにちは。
phpBBからDiscourseに80,000件の投稿をインポートしました。投稿には、[img]http://www.domain.tld/image.jpg[/img]のようなリモートウェブサイトへのリンク画像が多く含まれていますが、それらはもう存在しません。
投稿には何も表示されないため、元の画像があったことが不明瞭になり、文脈が途切れてしまうため、ユーザーをいらだたせています。
そこで質問ですが、元の画像がもう利用できない場合に、プレースホルダー画像を表示させることは可能でしょうか?
よろしくお願いいたします。
Roi
Canapin
(Coin-coin le Canapin)
2
デフォルトのブローカー画像アイコンが表示されますか?投稿がベイクされた後に表示されるはずだと思います。
カスタマイズしました。(コードが含まれています)
「いいね!」 1
Roi
3
いいえ、何も表示されません。しかし、近づいています。
のBBCodeタグが原因だと思います。投稿を編集してタグを削除すると、このようになります。
したがって、すべての[img] BBCodeタグを削除して投稿を再ベイクする必要があるということでしょうか?
それは面白そうですね。私もそれが必要だと思います
ありがとうございます!
Canapin
(Coin-coin le Canapin)
4
わかりません。インライン BBCodeタグを削除すると、テキスト内に画像URLがプレーンテキストとして残り、壊れた画像アイコンは使用されません。
BBCodeタグを削除し、画像URLの前後に空行を挿入してみてはどうでしょうか。まずバックアップを取ってください!
Roi
5
ええ。くそ、君の言う通りかもしれない。
さて、壊れた画像アイコン、またはリモート画像(推測ですが、ダウンロードされたもの)を取得するには、どうすればよいでしょうか。
Canapin
(Coin-coin le Canapin)
6
わかりません。
私も同様にインポートしたphpBBフォーラムで[IMG]タグと95%の壊れた画像に遭遇したはずですが、私の記憶が正しければ、壊れたインライン画像はインラインであっても壊れた画像アイコンに正しく置き換えられたはずですが、間違っているかもしれません 
現時点では既製の解決策はありませんが、必ず解決策を見つけることができると確信しています。
偶然、壊れたインライン画像を含むメッセージへのリンクはありますか?生テキストもコピーして貼り付けていただけますか?
「いいね!」 1
Roi
7
はい、これは実際の例です。
最初の投稿を確認すると、最後のテキスト行と署名の下に大きな空白があります。ソースコードでは、次のようなデッドイメージを確認できます。
<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>
Canapin
(Coin-coin le Canapin)
8
リモート画像をローカルにダウンロード設定は有効になっていますか?壊れた画像アイコンは、Discourse がリモート画像のダウンロードを試みて失敗した後にのみ表示されます。
設定が無効になっている場合、空行が残ります。
Roi
9
はい、有効になっています。phpBB からインポートする前も、常に有効でした。
phpBB インポーターはこの設定を無視する可能性がありますか?私の理解では、クッキングはインポーターの外で行われ、設定を使用するはずです。
すべての投稿を再クッキングしても問題は発生しますか?
Roi
10
試してみました:
rake posts:rebake_match["[img]"]
767 / 767 (100.0%)
767 posts done!
上記で言及した投稿(そして他のすべての投稿も)はまったく同じように見えます…
Canapin
(Coin-coin le Canapin)
11
/var/discourse/shared/standalone/import/settings.yml にリモート画像のダウンロードを true または false に設定できる設定があると思いますが、このオプションが設定されているかどうかにかかわらず、投稿はインポート後にベイクされます。
空の行に期待どおりの壊れた画像アイコンが表示されているのがわかります。
\u003chttps://forum.gdngs.de/t/grill-shirts-von-3dsupply-de/5515\u003e
多くの投稿を再ベイクする代わりに、投稿管理オプションから特定の投稿 HTML を再構築することが良いテストになります。これは再ベイクをトリガーするためです。

そして、キューに追加することで UpdateHotlinkedRaw ジョブをトリガーします。
テストインスタンスで、壊れた画像と BBcode の内部を使用して試しました。リモート画像をローカルにダウンロードするが無効になっている場合、空の行はそのまま残りました。有効になっている場合、代わりに壊れた画像アイコンが表示されました。
「いいね!」 1
Roi
12
ああ、そうですね、おっしゃる通りです。リベイクコマンド後のブラウザキャッシュの問題だったと思います。ご自身で確認していただきありがとうございます! 
結局、phpBBのインポートに問題があったようですね。phpBBからすべてインポートした後にリモート画像に関連する設定を変更した覚えはないのですが…
ああ、クール。見つけました、そしてそれをクリックしました。
Sidekiqのどこにも UpdateHotlinkedRaw ジョブが見つかりません… これを解決するのを手伝ってもらえますか。これは間違いなくPEBCAK(問題はユーザー側にあり、オペレーターは無能)だと思います。 
これは、phpBBからすべてインポートした後に download remote images to local を有効にしたという方向につながりますね。うーん… テスト環境も持っていて、そこで多くのことをテストしたので、インポート前にはすでに有効になっていたと確信しています。
Canapin
(Coin-coin le Canapin)
13
注:ジョブはいずれにせよ数分後にトリガーされるため、Sidekiqにアクセスするのは確認を速くするためだけです。
UpdateHotlinkedRawジョブは、投稿HTMLを再構築してから数秒後にSidekiqのScheduledタブに表示されるはずです。
このジョブは、Discourseフォーラムの設定でリモート画像をローカルにダウンロードする設定が有効になっており、投稿に画像が含まれている場合にのみ表示されるはずです。
それでも機能しない場合は、現時点では他にアイデアがありません…!
Roi
14
ありがとうございます。これで明確になりました。リモート画像のない投稿を再ベイクしたところ、何も起こりませんでした。 
そして、ありがとうございます。ここで問題を解決するのに役立ちました。プレースホルダー画像が表示されています。そして、ここでリンクした CSS トリックでプレースホルダー画像を置き換える可能性が高いです。
「いいね!」 1