API vs. Modulo: discrepanza di contenuto quando modificato

Ciao,

Ho appena notato che quando pubblico contenuti HTML tramite l’API posts.json e poi modifico il post, vedo l’HTML nel contenuto del post.

Come viene visualizzato il post:

Quando clicco su modifica:

Richiesta API:

Quando pubblico direttamente tramite il modulo, non viene visualizzato alcun HTML nella modifica (la visualizzazione è la stessa):

Come posso evitare di avere HTML nel contenuto quando il post viene modificato?

Grazie :slight_smile:

1 Mi Piace

Ciao Luicid :wave:

Il contenuto effettivo, visualizzato nell’editor, accetta un array di tag HTML, quindi li visualizzerà come testo normale.

Se vuoi aggiungere un’interruzione di riga senza usare un tag <br>, usa invece \n. :slight_smile:

Prima riga\nNuova riga

Se vuoi avere due paragrafi, devi aggiungere un’ulteriore interruzione di riga:

Prima riga\n\nNuova riga

La modifica di questi messaggi non mostrerà alcun tag <br>.

Nota: i paragrafi vengono creati automaticamente a seconda del contesto quando il post viene elaborato, quindi non è necessario aggiungere questi tag all’input effettivo della tua query.

4 Mi Piace

Ciao di nuovo Canapin :slight_smile:

Ok, capisco. Quindi l’unica opzione per avere una visualizzazione pulita quando gli utenti modificano i loro post HTML migrati tramite l’API è sostituire tutti i tag <p> e <br> con \n se ho capito bene?

Grazie

2 Mi Piace

Se si tenta di sanificare contenuti HTML importati, si può supporre che si possano sostituire i paragrafi con interruzioni di riga, in modo da essere sicuri che ci siano interruzioni di riga e che il post venga elaborato correttamente.

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

diventerebbe:

\nsome text\n\nsome other text\n

E verrà renderizzato come:


some text

some text


3 Mi Piace

Ok, grazie :slight_smile:
Ultima domanda:
C’è un modo per dirmi come aggiungere una menzione, come questa: @Canapin, in un post tramite l’API? Ho provato a usare @username nel campo raw, ma non funziona.

Assicurati di inviare un payload JSON.

{
    "raw": "Menzione di test: @canapin",
    "topic_id": 86,
    "reply_to_post_number": 3
}

Il risultato è una menzione funzionante:

Se stai importando molti dati, dovresti usare uno script di importazione. Molti di essi hanno esempi di rimozione di HTML e gestione di virgolette e menzioni.

Se vuoi aggiungere continuamente dati a un sito esistente, usa l’API.

1 Mi Piace

Ah, vedo il mio errore! Stavo testando con un nome utente minuscolo invece di usare il nome utente esatto, poiché la menzione è sensibile alle maiuscole. Mi scuso.

Grazie per aver dedicato del tempo ad aiutarmi! :wink:

Buona giornata!

Onestamente, ho creato una POC con uno script di importazione in Ruby, ma dato che devo sincronizzare i dati per diversi giorni tra una vecchia soluzione e Discourse, preferisco eseguire un semplice script Python. È molto più veloce da configurare e mantenere. Inoltre, è coerente, dato che estraggo i vecchi dati con Python. Il precedente provider non ci concederà l’accesso al database, quindi ho estratto tutti i contenuti in un database.

Ma ovviamente è una soluzione migliore se si tratta di una semplice migrazione :slight_smile:

Le menzioni dovrebbero funzionare anche se modifichiamo la capitalizzazione:

image

Lo screenshot nel tuo primo post utilizza un form-data. Dovresti usare un campo raw con formattazione JSON. :slight_smile:

2 Mi Piace

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