I’m planning a migration of an existing community (macscripter.net - Mac OS Automation discussions) hosted with FluxBB to Discourse. This article looks promising in terms of migrating the data. Its going to be a big job as I have over 30,000 users, and 120K posts but it seems doable.
However, I want to preserve all the incoming links. macscripter.net is a significant reference for the Apple automation community. We’ve got almost 20 years of posts with a lot of references to the site appearing on other sites and in mailing list archives which I don’t want to break.
I’m looking for a way to translating incoming FluxBB post links to corresponding Discourse posts? I don’t see any way to accomplish this with stock Discourse so I’m presuming I’ll need to create some sort of plugin that responds to FluxBB’s /viewtopic.php?id=##### links and redirects to the appropriate Discourse link. If anyone else has experience solving this kind of problem, I would love to hear how you approached it.
Most import scripts create permalinks that handle the redirects. I don’t know offhand if they one does. If not, you can look at one of the others for example code.
Tengo la misma pregunta y estoy un poco confundido con la respuesta. También estoy buscando hacer una importación considerable de FluxBB.
Veo que en realidad hay una característica de Discourse llamada “Permalinks” (How to make a redirect URL in a Discourse install? - #4 by cpradio), así que estamos diciendo que al crear esas cosas, Discourse podría tomar una URL estilo FluxBB como “/viewtopic.php?id=((old topic id))” y redirigir a “/t/((new topic slug))/((new topic id))”. ¿Quizás lo mismo para publicaciones individuales en un tema? Lo mismo para las URL de los perfiles de usuario. (Así que necesitaremos muchos permalinks). Veo la tabla de la base de datos para Permalinks.
Eso suena como una solución interesante, pero el importador de FluxBB no está creando ningún permalink. No puedo ver ningún código para eso. De hecho, no puedo ver ningún código en ninguno de los scripts de importación que haga eso (No se menciona el modelo ActiveRecord “Permalink”).
Estaría feliz de trabajar en modificar el importador de FluxBB para hacer esto, pero ¿hay algún ejemplo en uno de los otros importadores?
Lo único que sí veo en el código en esta línea es la inicialización de “LookupContainer” y el almacenamiento de todos los IDs antiguos y sus IDs nuevos correspondientes. ¿Se puede usar esto para crear muchos objetos Permalink?
Consulta el importador de vbulletin (pero también answerhub, vanilla, mylittleforum, bbpress, drupal, entre otros; quizás buscaste con distinción de mayúsculas y minúsculas o algo así), que lo hace en la función import_topics (ignora la función de archivo permalink). Querrás código que agregue el permalink y una permalink_normalization que mapee la URL de fluxbb a cualquier permalink que hayas creado.
¡Maldición! Tienes razón. Mi búsqueda en el IDE me estaba jugando una mala pasada. De hecho, hay un montón de ejemplos de objetos “Permalink” creándose. Así que quizás considere añadir esto a la importación de FluxBB.
Tengo curiosidad por saber cómo fue tu gran importación @alldritt. Bueno, parece que macscripter.net todavía está en FluxBB, ¿así que no muy bien? Si notaste que el importador de fluxbb no está convirtiendo muy bien el bbcode, he estado trabajando en varias correcciones para eso: Pull request en progreso.
Hay una superposición interesante (incómoda) entre estas discusiones, porque FluxBB soporta bbcode de la forma [post=123] para enlazar a otra publicación por id (haciendo referencia a los ids de publicaciones antiguas en el sistema FluxBB de origen). Será más fácil lidiar con eso si tenemos una solución para redirigir estos ids.
No lo hará. Los enlaces permanentes solo funcionan para enlaces entrantes, no para los internos. Necesitará escribir algo para reescribir esos enlaces internos como citas de Discourse. Hay ejemplos de eso también.
Intenté un par de veces convertir y me di por vencido. Con el tiempo, al mudarme a un Mac M1, perdí mi banco de pruebas de Discourse y nunca llegué a recrearlo. Espero volver a este proyecto tan pronto como tenga algo de tiempo libre. Lidiar con la redirección de enlaces existentes fue una parte con la que tuve problemas. No había llegado a verificar que todo el BBCode se tradujera correctamente. Tengo más de 130.000 publicaciones para convertir, lo cual es desalentador de verificar.
Espero que esto te sea útil. Ayer estuve trabajando para añadir la funcionalidad create_permlinks al importador de FluxBB.
En este momento, esto está en mi PR de WIP. Ve el commit “Add Permalink creation logic to FluxBB importer”al final de esta lista. Espero fusionar todo eso en algún momento, posiblemente en un orden diferente (actualmente estoy esperando que alguien revise este PR básico como punto de partida).
Así que esto crea redirecciones para cuatro tipos diferentes de URLs de FluxBB.
profile.php?id=<user id>
viewtopic.php?pid=<post id>
viewtopic.php?id=<topic id>
viewforum.php?id=<forum id>
Creo que estos cuatro cubren todo lo que la gente querrá conservar como enlaces de trabajo. ¿Qué opinas?
Volviendo al tema de los enlaces internos especiales de FluxBB
No iba a intentar mantenerlos como enlaces internos dentro del nuevo discourse. Solución perezosa: enlazarán a las URLs antiguas del foro de fluxbb (como URLs completas, por lo que son enlaces externos) que, gracias a estos Permalinks, redirigirán al usuario al lugar correcto en el nuevo discourse.
Creo que tu solución perezosa podría funcionar. Puedes encontrar ejemplos de reescritura de enlaces internos si quieres, pero perezoso puede ser bueno.