Importación masiva de redirecciones a nuevos temas en Discourse

Hola a todos,

Recientemente logré migrar mi sitio de una antigua plataforma personalizada a Discourse con éxito. Sin embargo, ahora me enfrento al desafío de importar permalinks/redirecciones a los nuevos temas de Discourse. Tengo los IDs de todas las publicaciones creadas en Discourse y estoy explorando opciones para importar estas redirecciones a través de la API o la línea de comandos, ya que la importación manual debido a la gran cantidad no es factible.

¿Alguien podría aconsejarme si existen métodos o herramientas disponibles para importar eficientemente enlaces de redirección a los nuevos temas de Discourse? Sus ideas y sugerencias serían muy apreciadas.

¡Gracias de antemano!

Si tu migración se basó en un script de importación, entonces los temas (y probablemente las publicaciones) incluyen un campo personalizado import_id. Luego puedes usar esos campos personalizados, Permalinks y SiteSetting.permalink_normalizations para crear redirecciones.

Puedes probar en rails con algo como

tcfs=TopicCustomField.where(name: 'import_id')
pcfs=PostCustomField.where(name: 'import_id')

Si no tienes esos, entonces será Realmente Difícil.

Si tienes esos, entonces puedes hacer algo como

tcfs.each do |tcf|
  Permalink.create(url: "imported-topic/#{tcf.value}", topic_id: tcf.topic_id)
end

Y luego crear una PermalinkNormalization que redirija la ruta de los temas a /imported-topic/IMPORTED_ID.

Puedes usar grep en los import_scripts para encontrar otros scripts de importación que establezcan Permalinks y la normalización de permalinks.

1 me gusta

Gracias, Jay, por tu respuesta. En lugar de utilizar el script de importación para la migración, opté por la integración de API debido a la estructura personalizada. Desarrollé un script de Python para importar publicaciones utilizando la API y he obtenido con éxito nuevos ID de tema para cada tema. A pesar de importar URL antiguas con nuevos ID/URL de tema en aproximadamente 6k páginas, ninguna de las asignaciones funciona como se esperaba. ¿Podrías por favor aconsejarme sobre lo que podría estar pasando por alto y cómo rectificar este problema? Tu orientación sería muy apreciada.