Thumbnail generation & markdown rendering issue に関連する問題です
Discourse が画像をダウンロードし、HTML を Markdown 構文に置き換えると、私たちの環境では以下のようになります:
[...]<a href="<link_here>" target="_blank"></a>[...]
この場合、Discourse は画像をレンダリングできません。
画像
この問題を修正するには、少なくとも上記に空行を挿入する必要があります:
[...]<a href="<link_here>" target="_blank">
</a>[...]
画像
HTML で囲まれた Markdown 画像のレンダリングを許可することは可能でしょうか?
@david
「いいね!」 5
david
(David Taylor)
2020 年 5 月 26 日午後 5:40
3
メタでこれを試してみましょう。この画像をリンク内にホットリンクしています。
<a href="https://discourse.org"><img src="..."/></a>
画像が読み込まれたときにどうなるか見てみましょう…
「いいね!」 3
david
(David Taylor)
2020 年 5 月 26 日午後 5:44
4
@Arkshine 、それはうまくいったようですね。<a href="https://discourse.org"></a> が正常にレンダリングされています。
リンクを取り巻く HTML 構造について、もう少し共有していただけますか?
「いいね!」 2
simon
2020 年 5 月 26 日午後 5:51
6
「いいね!」 3
david
(David Taylor)
2020 年 5 月 26 日午後 5:57
7
なるほど!@simon さん、WordPress プラグインのアップグレードは古い投稿も修正するのでしょうか?それとも新しい投稿のみですか?
「いいね!」 3
simon
2020 年 5 月 26 日午後 5:59
8
この修正は、WordPress ブロックエディターで公開された投稿にのみ適用されます。WordPress 上で「Discourse トピックを更新」ボタンをクリックすれば、古い投稿も修正されます。ただし、古い投稿をすべて修正するには、スクリプトを作成してループ処理を行うか、手動で各投稿に対して行う必要があります。
「いいね!」 4
david
(David Taylor)
2020 年 5 月 26 日午後 6:02
9
この HTML を試してみましょう:
<p><img src="..."/></p>

「いいね!」 4
david
(David Taylor)
2020 年 5 月 26 日午後 6:17
10
これは WordPress 統合以外の投稿が行われた場合にも備え、Discourse 側でも修正すべきだと考えます。要約すると以下の通りです:
<p><img src="..."/></p>を投稿しました。これは完全に有効な HTML です
pull_hotlinked_images が画像を取得し、マークアップを <p></p> に置き換えました
これがレンダリングされません
したがって、ここでは 2 つの修正オプションがあります。
または
マークダウンエンジンが <p></p> をレンダリングできるように修正する。なお、これは commonmark デモでもレンダリングされません。
@sam マークダウン画像が <p> と同じ行ではレンダリングされない意図的な理由をご存じでしょうか?
「いいね!」 3
sam
(Sam Saffron)
2020 年 5 月 27 日午前 3:02
11
これは CommonMark 仕様の一部です。
**test**
<p>**test**</p>
ここでは仕様から逸脱したくありません。おそらく、このようなケースに対応するため、外部リンク画像のプル時に 2 つの改行を注入することで修正できるでしょう。ただし、これはかなり稀なケースであり、ある意味で自己責任によるものです。
「いいね!」 5
それほど珍しいことではないと思います。特に Discourse が WP-Discourse や API を利用するその他のツールなどの人気のあるツールと連携している場合です。
空行を追加することを検討してください。これは破壊的な変更にはならないと思われますし、実装も比較的容易です。
「いいね!」 3
david
(David Taylor)
2020 年 6 月 1 日午前 11:00
13
@Arkshine 社内でこの件について何度も議論してきました。私たちにとって重要なのはコンテンツの整合性を保つことです。そのため、改行を解決する案は実現しない可能性が高いです。
しかし、何らかの対応は必ず行います。pull_hotlinked_images ジョブが画像を破棄するのは許容できません。近々解決策を発表できることを願っています
「いいね!」 5
simon
2020 年 8 月 13 日午後 6:48
16
この問題の回避策として、Discourse がリモート画像をダウンロードしないように設定できます。これを行うには、disabled image download domains サイト設定に画像ドメインを追加します。また、download remote images to local サイト設定を無効にすることで、Discourse がすべてのリモート画像をダウンロードしないようにすることも可能です。詳細については、Fix broken images for posts created by the WP Discourse and RSS plugins をご覧ください。
「いいね!」 4
私たちの場合、公式のトピックサムネイルコンポーネントを使用しているため、ローカル画像が必要となり、それができません。WP-Discourse でトピックを作成する前に、コンテンツ内のすべての<img> タグの前に改行を追加することで、この問題を解決しました。全員にとっての解決策ではありませんが、私たちの場合は機能しています。Discourse がこの合法な使用法をサポートしていないのは少し残念です。
ただし、プラグインやコンポーネントに縛られていない場合、またはトピック作成前にコンテンツを修正できない場合は、確かに合理的な回避策と言えます。
「いいね!」 2
david
(David Taylor)
2020 年 8 月 13 日午後 7:35
18
引き続き、この問題の修正を計画しています。残念ながら、これは当社のマークダウンレンダリングシステムに深く潜む問題であり、修正には複雑な作業が必要です。しかし、必ず対応いたします。お待たせしてしまい、申し訳ございません。
「いいね!」 5
simon
2021 年 1 月 26 日午後 6:55
22
Discourse RSS プラグインを介して作成された画像を含む投稿にも同様の問題が発生することについて、ここに追記します。
「いいね!」 6
simon
2021 年 6 月 23 日午後 7:46
23
このトピックでの複数回の投稿にお詫び申し上げますが、この問題は「Zendesk からコメントを同期する」設定が有効な場合、Zendesk プラグインを通じて作成された投稿内の画像にも影響を及ぼします。このケースの難しい点は、画像のソースを事前に特定できないため、「無効化する画像ダウンロードドメイン」設定に画像の src を追加するという回避策が機能しないことです。
もし画像タグが HTML タグで囲まれている場合、リモート画像をローカルにダウンロードしないように防止することは可能でしょうか?
「いいね!」 1
sam
(Sam Saffron)
2021 年 6 月 23 日午後 10:34
24
残念ながら、それは完全に不可能です。もしそのような処理を行えば、サードパーティが追跡用GIFを注入することでフォーラム上の利用状況を追跡できてしまいます。リモート画像のダウンロード機能はセキュリティ機能の一部なのです。
その代わり、@tgxworld が数年前に構築した画像リマッパーと同様に、HTML から逆方向に動作し、再調理(re-cooking)によって変更の安定性を確保する「より賢い」システムが必要だと考えます。残念ながら、これは非常に複雑な変更となります。
「いいね!」 4
angus
(Angus McLeod)
2021 年 8 月 11 日午前 2:19
25
この問題は再び発生しました
I see, thanks for clarifying. Honestly, this is unlikely to change anytime soon for the reasons discussed in the topic I linked above . For example
The key thing for us is to maintain the integrity of the content, so the newline solution will probably not happen.
The problem is that if you were to try and autocorrect for the issue you’re describing it would potentially create other issues. The current solution here is to add your wordpress domain to the disabled image download domains site se…
単なる思いつきですが、ここで難しい問題(つまり、HTML から Markdown への変換)を回避できないか考えてみます。整理のために要点をまとめます。
Discourse は、投稿コンテンツの作成に HTML のインポートをサポートしています(例:WP Discourse からの HTML)。
一部のコンテキストでは、ユーザーは元の HTML の整合性が完全に保たれることを期待します。
ここでの「整合性」には少なくとも以下の 2 つの側面があります。
コンテンツのレンダリング方法(例:改行)
メディアのホスト場所(例:画像のローカルへのダウンロードによるリンク切れの防止、またはセキュリティ上の懸念)
HTML から Markdown への変換は、最初の種類の整合性に問題を生じさせる可能性がありますが、現在のところ 2 番目の種類の整合性を確保するために必要です。
したがって、特定のインポートされた投稿に対してこの問題に対処する方法の一つとして、インポートされた HTML をそのまま調理済み(cooked)の投稿コンテンツとして保存し、pull_hotlinked_images ジョブが、img タグを Markdown に変換することなく、そのようなコンテンツ内の画像をダウンロードできるようにするというアプローチが考えられます。
より簡潔に言えば、コードは img タグを Markdown に変換することを要求せずに、ホットリンクされた画像をダウンロードできるようにするかもしれません。そのような投稿の場合、調理済みコンテンツにダウンロードした画像の URL を生コンテンツの代わりに補間 します。
「いいね!」 3
sam
(Sam Saffron)
2021 年 8 月 11 日午前 3:50
26
難しい点は、そのフラグがついた投稿をどのように編集するかです。エディタが raw HTML モードになり、ツールバー全体が機能しなくなったりします。
「いいね!」 1