API vs. Form: Inhaltsabweichung bei Bearbeitung

Hallo,

Ich habe gerade festgestellt, dass, wenn ich HTML-Inhalt über die API posts.json poste und den Beitrag dann bearbeite, ich das HTML im Inhalt des Beitrags sehe.

So wird der Beitrag angezeigt:

Wenn ich auf Bearbeiten klicke:

API-Anfrage:

Wenn ich direkt über das Formular poste, wird kein HTML beim Bearbeiten angezeigt (die Anzeige ist dieselbe):

Wie kann ich vermeiden, dass beim Bearbeiten des Beitrags HTML im Inhalt angezeigt wird?

Vielen Dank :slight_smile:

1 „Gefällt mir“

Hallo Luicid :wave:

Der Rohinhalt, der im Composer angezeigt wird, akzeptiert ein Array von HTML-Tags, wodurch diese als einfacher Text angezeigt werden.

Wenn Sie einen Zeilenumbruch ohne die Verwendung eines <br>-Tags hinzufügen möchten, verwenden Sie stattdessen \n. :slight_smile:

Erste Zeile\nNeue Zeile

Wenn Sie zwei Absätze haben möchten, müssen Sie einen zusätzlichen Zeilenumbruch hinzufügen:

Erste Zeile\n\nNeue Zeile

Das Bearbeiten dieser Nachrichten zeigt keine <br>-Tags an.

Hinweis: Absätze werden automatisch je nach Kontext erstellt, wenn der Beitrag verarbeitet wird, sodass Sie diese Tags nicht zu Ihrer Rohabfrageeingabe hinzufügen müssen.

4 „Gefällt mir“

Hallo nochmal Canapin :slight_smile:

Ok, ich verstehe. Die einzige Möglichkeit, eine saubere Anzeige zu haben, wenn Benutzer ihre migrierten HTML-Beiträge über die API bearbeiten, besteht also darin, alle \u003cp\u003e- und \u003cbr\u003e-Tags durch \\n zu ersetzen, wenn ich das richtig verstehe?

Danke

2 „Gefällt mir“

Wenn Sie versuchen, importierte HTML-Inhalte zu bereinigen, können Sie Absätze durch Zeilenumbrüche ersetzen, sodass Sie sicher sind, dass Zeilenumbrüche vorhanden sind und der Beitrag ordnungsgemäß verarbeitet wird.

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

würde zu:

\nsome text\n\nsome other text\n

werden und würde wie folgt gerendert:


some text

some text


3 „Gefällt mir“

Ok, danke :slight_smile:
Letzte Frage:
Gibt es eine Möglichkeit, mir zu sagen, wie ich eine Erwähnung, wie diese: @Canapin, in einem Beitrag über die API hinzufügen kann? Ich habe versucht, @username im Raw-Feld zu verwenden, aber es funktioniert nicht.

Stellen Sie sicher, dass Sie eine JSON-Nutzlast senden.

{
    "raw": "Test-Erwähnung: @canapin",
    "topic_id": 86,
    "reply_to_post_number": 3
}

Das Ergebnis ist eine funktionierende Erwähnung:

Wenn Sie eine Menge Daten importieren, sollten Sie ein Importskript verwenden. Viele davon enthalten Beispiele zum Entfernen von HTML und zur Handhabung von Anführungszeichen und Erwähnungen.

Wenn Sie kontinuierlich Daten zu einer bestehenden Website hinzufügen möchten, verwenden Sie die API.

1 „Gefällt mir“

Ah, ich sehe meinen Fehler! Ich habe mit einem Benutzernamen in Kleinbuchstaben getestet, anstatt den genauen Benutzernamen zu verwenden, da die Erwähnung Groß- und Kleinschreibung beachtet. Entschuldigen Sie bitte.

Vielen Dank, dass Sie sich die Zeit genommen haben, mir zu helfen! :wink:

Schönen Tag noch!

Ehrlich gesagt, habe ich ein Proof of Concept mit einem Import-Skript in Ruby erstellt, aber da ich Daten für mehrere Tage zwischen einer alten Lösung und Discourse synchronisieren muss, ziehe ich es vor, ein einfaches Python-Skript auszuführen. Es ist viel schneller einzurichten und zu warten. Außerdem ist es konsistent, da ich die alten Daten mit Python scrapen. Der vorherige Anbieter wird uns keinen Zugriff auf die Datenbank gewähren, daher habe ich alle Inhalte in eine Datenbank gescrapt.

Aber natürlich ist es eine bessere Lösung, wenn es eine einfache Migration ist :slight_smile:

Erwähnungen sollten auch dann funktionieren, wenn wir die Groß-/Kleinschreibung ändern:

image

Der Screenshot in deinem ersten Beitrag verwendet ein Formular-Datenfeld. Du solltest ein Rohfeld mit JSON-Formatierung verwenden. :slight_smile:

2 „Gefällt mir“

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