今日これを実装しようとしましたが、いくつか問題がありました。
- フォーラム投稿では、URL(discourseEmbedUrlから派生?)が小文字化され、テキスト「This is a companion discussion topic for the original entry at …」に続くリンクの、大文字と小文字を区別するURLが壊れます。
- 最初のページ読み込み時に、埋め込みが「Loading discussion…」と表示され、ハングします。2回目のページ読み込みで全てが機能します。
- ページのスラッシング:iframeが読み込まれている間、デフォルトの高さになりますが、コメントが見つからない場合、高さは「Start Discussion」のみを表示する1行に縮小されます。これは、「loading discussion」のバグを悪化させます。なぜなら、それは大きな垂直の高さを開いたままにするからです。
- 埋め込みの親からスクレイピングされたデータが、ページ全体をテキスト化するのではなく、メタタグを優先すると良いでしょう。これはより一般的なdiscourseの動作だと思います。
最大の驚きは、埋め込みがあるURLにアクセスするたびに、新しいトピックが作成されることを学んだことです。これはOPにあります。
私が考えられる唯一の解決策はハックですが、埋め込みエンドポイントにpingを送信するために短期的なSSR/キャッシングに依存しています。
したがって、ロジックは次のようになると考えられます。
-
$discourse/embed/info?embed_url=$linkをチェックします。 -
トピックが存在する場合は、通常どおり埋め込みを表示します。
-
存在しない場合は、「start conversation」ボタンを表示し、
$discourse/new-topic?subject=$linkにリンクします。
これで機能しますか、それとも他に連携する必要のあるものはありますか?