API vs. Formulaire : discordance de contenu lors de la modification

Bonjour,

Je viens de remarquer que lorsque je publie du contenu HTML via l’API posts.json, puis que je modifie le message, je vois le HTML dans le contenu du message.

Comment le message s’affiche :

Lorsque je clique sur modifier :

Requête API :

Lorsque je publie directement via le formulaire, aucun HTML n’apparaît dans l’édition (l’affichage est le même) :

Comment puis-je éviter d’avoir du HTML dans le contenu lors de la modification du message ?

Merci :slight_smile:

1 « J'aime »

Salut Luicid :wave:

Le contenu brut, qui s’affiche dans le compositeur, accepte un tableau de balises HTML, il les affichera donc en texte brut.

Si vous souhaitez ajouter un saut de ligne sans utiliser de balise <br>, utilisez \n à la place. :slight_smile:

Première ligne\nNouvelle ligne

Si vous souhaitez avoir deux paragraphes, vous devez ajouter un saut de ligne supplémentaire :

Première ligne\n\nNouvelle ligne

La modification de ces messages n’affichera aucune balise <br>.

Remarque : les paragraphes sont créés automatiquement en fonction du contexte lors du traitement du message, il n’est donc pas nécessaire d’ajouter ces balises à votre entrée brute de requête.

4 « J'aime »

Salut Canapin :slight_smile:

Ok, je vois. Donc la seule option pour avoir un affichage propre lorsque les utilisateurs modifient leurs publications HTML migrées via l’API est de remplacer toutes les balises <p> et <br> par \n si je comprends bien ?

Merci

2 « J'aime »

Si vous essayez d’assainir du contenu HTML importé, je suppose que vous pouvez également remplacer les paragraphes par des sauts de ligne, de sorte que vous soyez sûr qu’il y ait des sauts de ligne et que le message soit traité correctement.

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

deviendrait :

\nsome text\n\nsome other text\n

Et sera rendu comme suit :


some text

some text


3 « J'aime »

Ok, merci :slight_smile:
Dernière question :
Y a-t-il un moyen de me dire comment ajouter une mention, comme celle-ci : @Canapin, dans un message via l’API ? J’ai essayé d’utiliser @username dans le champ brut, mais cela ne fonctionne pas.

Assurez-vous d’envoyer une charge utile JSON.

{
    "raw": "Mention de test : @canapin",
    "topic_id": 86,
    "reply_to_post_number": 3
}

Le résultat est une mention fonctionnelle :

Si vous importez une grande quantité de données, vous devriez utiliser un script d’importation. Beaucoup d’entre eux contiennent des exemples pour supprimer le HTML et gérer les guillemets et les mentions.

Si vous souhaitez ajouter continuellement des données à un site existant, utilisez l’API.

1 « J'aime »

Ah, je vois mon erreur ! Je testais avec un nom d’utilisateur en minuscules au lieu d’utiliser le nom d’utilisateur exact, car la mention est sensible à la casse. Mes excuses.

Merci d’avoir pris le temps de m’aider ! :wink:

Passez une bonne journée !

Honnêtement, j’ai créé une POC avec un script d’importation en Ruby, mais comme je dois synchroniser des données sur plusieurs jours entre une ancienne solution et Discourse, je préfère exécuter un simple script Python. Il est beaucoup plus rapide à mettre en place et à maintenir. De plus, c’est cohérent, car je récupère les anciennes données avec Python. Le fournisseur précédent ne nous accordera pas l’accès à la base de données, j’ai donc récupéré tout le contenu dans une base de données.

Mais bien sûr, c’est une meilleure solution si c’est une migration simple :slight_smile:

Les mentions devraient fonctionner même si nous modifions la casse :

image

La capture d’écran dans votre premier message utilise un form-data. Vous devriez utiliser un champ brut avec un formatage JSON. :slight_smile:

2 « J'aime »

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