API vs. Formato: Desajuste de contenido al editar

Hola,

Me acabo de dar cuenta de que cuando publico contenido HTML usando la API posts.json y luego edito la publicación, veo el HTML en el contenido de la publicación.

Cómo se muestra la publicación:

Cuando hago clic en editar:

Solicitud de API:

Cuando publico directamente a través del formulario, no se muestra ningún HTML en la edición (la visualización es la misma):

¿Cómo puedo evitar tener HTML en el contenido cuando se edita la publicación?

Gracias :slight_smile:

1 me gusta

Hola Luicid :wave:

El contenido sin procesar, que se muestra en el editor, acepta una matriz de etiquetas HTML, por lo que las mostrará en texto sin formato.

Si deseas agregar un salto de línea sin usar una etiqueta <br>, usa \n en su lugar. :slight_smile:

Primera línea\nNueva línea

Si deseas tener dos párrafos, necesitas agregar un salto de línea adicional:

Primera línea\n\nNueva línea

La edición de estos mensajes no mostrará ninguna etiqueta <br>.

Nota: los párrafos se crean automáticamente según el contexto cuando se procesa la publicación, por lo que no es necesario agregar estas etiquetas a la entrada sin procesar de tu consulta.

4 Me gusta

Hola de nuevo Canapin :slight_smile:

Ok, ya veo. Entonces, la única opción para tener una visualización limpia cuando los usuarios editan sus publicaciones HTML migradas a través de la API es reemplazar todas las etiquetas <p> y <br> con \n si entiendo correctamente?

Gracias

2 Me gusta

Si intentas sanear algún contenido HTML importado, supongo que también puedes reemplazar los párrafos con saltos de línea, así te asegurarás de que haya saltos de línea y la publicación se procesará correctamente.

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

se convertiría en:

\nsome text\n\nsome other text\n

Y se renderizará como:


some text

some text


3 Me gusta

Ok, gracias :slight_smile:
Última pregunta:
¿Hay alguna forma de que me digas cómo añadir una mención, como esta: @Canapin, en una publicación a través de la API? Intenté usar @username en el campo raw, pero no funciona.

Asegúrate de enviar una carga útil JSON.

{
    "raw": "Mención de prueba: @canapin",
    "topic_id": 86,
    "reply_to_post_number": 3
}

El resultado es una mención funcional:

Si vas a importar un montón de datos, deberías usar un script de importación. Muchos de ellos tienen ejemplos de cómo eliminar HTML y manejar comillas y menciones.

Si quieres agregar datos continuamente a un sitio existente, usa la API.

1 me gusta

¡Ah, veo mi error! Estaba probando con un nombre de usuario en minúsculas en lugar de usar el nombre de usuario exacto, ya que la mención distingue entre mayúsculas y minúsculas. Mis disculpas.

¡Gracias por tomarte el tiempo de ayudarme! :wink:

¡Que tengas un buen día!

La verdad es que creé una prueba de concepto (POC) con un script de importación en Ruby, pero como necesito sincronizar datos de varios días entre una solución antigua y Discourse, prefiero ejecutar un script simple de Python. Es mucho más rápido de configurar y mantener. Además, es coherente, ya que extraigo los datos antiguos con Python. El proveedor anterior no nos concederá acceso a la base de datos, así que extraje todo el contenido a una base de datos.

Pero, por supuesto, es una mejor solución si es una migración simple :slight_smile:

Las menciones deberían funcionar incluso si jugamos con las mayúsculas:

image

La captura de pantalla en tu primera publicación utiliza form-data. Deberías usar un campo raw con formato JSON. :slight_smile:

2 Me gusta

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