API 対 フォーム: 編集時にコンテンツの不一致

こんにちは。

API posts.json を使用して HTML コンテンツを投稿し、その後投稿を編集すると、投稿のコンテンツに HTML が表示されることに気づきました。

投稿の表示方法:

編集をクリックしたとき:

API リクエスト:

フォームから直接投稿すると、編集時に HTML は表示されません(表示は同じです)。

投稿が編集されるときに、コンテンツに HTML が表示されないようにするにはどうすればよいですか?

ありがとうございます :slight_smile:

「いいね!」 1

こんにちは、Luicidさん :wave:

コンポーザーに表示される生のコンテンツは、HTMLタグの配列を受け入れるため、プレーンテキストで表示されます。

<br>タグを使用せずに改行を追加したい場合は、代わりに\nを使用してください。 :slight_smile:

最初の行\n新しい行

2つの段落を作成したい場合は、追加の改行が必要です。

最初の行\n\n新しい行

これらのメッセージを編集しても、<br>タグは表示されません。

注:投稿が処理される際のコンテキストに応じて、段落は自動的に作成されるため、クエリの生の入力にこれらのタグを追加する必要はありません。

「いいね!」 4

こんにちは、Canapin :slight_smile:

わかりました。つまり、API経由で移行された HTML 投稿を編集する際に、きれいに表示させる唯一の方法は、\u003cp\u003e\u003cbr\u003e タグをすべて \\n に置き換えるということですね?

ありがとうございます。

「いいね!」 2

インポートされたHTMLコンテンツをサニタイズしようとしている場合、段落を改行に置き換えることもできるため、改行が確実に存在し、投稿が適切に処理されるようになります。

<p>some text</p><p>some other text</p>

は次のようになります。

\nsome text\n\nsome other text\n

そして次のようにレンダリングされます。


some text

some text


「いいね!」 3

はい、ありがとうございます :slight_smile:
最後の質問です。
API経由で投稿にメンション(例:@Canapin)を追加する方法はありますか? rawフィールドで@usernameを試しましたが、うまくいきませんでした。

JSONペイロードを送信するようにしてください。

{
    "raw": "テストメンション: @canapin",
    "topic_id": 86,
    "reply_to_post_number": 3
}

結果は機能するメンションです。

大量のデータをインポートする場合は、インポートスクリプトを使用する必要があります。それらの多くには、HTMLの削除や引用符およびメンションの処理の例が含まれています。

既存のサイトに継続的にデータを追加したい場合は、APIを使用してください。

「いいね!」 1

なるほど、間違いに気づきました!大文字と小文字を区別するメンションなので、正確なユーザー名を使用する代わりに、小文字のユーザー名でテストしていました。申し訳ありません。

お時間を割いてお手伝いいただき、ありがとうございました!:wink:

良い一日を!

率直に言って、Rubyでインポートスクリプトを作成して概念実証(POC)を作成しましたが、古いソリューションとDiscourseの間で数日間のデータを同期する必要があるため、単純なPythonスクリプトを実行する方が良いと考えています。セットアップと保守がはるかに高速です。さらに、Pythonで古いデータをスクレイピングするため、一貫性があります。以前のプロバイダーはデータベースへのアクセスを許可しないため、すべてのコンテンツをデータベースにスクレイピングしました。

しかし、もちろん、単純な移行であればより良いソリューションです:slight_smile:

大文字・小文字を区別しない場合でも、メンションは機能するはずです。

image

最初の投稿のスクリーンショットは form-data を使用しています。JSON 形式の raw フィールドを使用してください。:slight_smile:

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.