Je prévois de migrer une communauté existante (macscripter.net - discussions sur l’automatisation Mac OS) hébergée avec FluxBB vers Discourse. Cet article semble prometteur pour la migration des données. Ce sera un gros travail car j’ai plus de 30 000 utilisateurs et 120 000 messages, mais cela semble réalisable.
Cependant, je souhaite conserver tous les liens entrants. macscripter.net est une référence importante pour la communauté de l’automatisation Apple. Nous avons près de 20 ans de messages avec de nombreuses références au site apparaissant sur d’autres sites et dans les archives de listes de diffusion que je ne veux pas rompre.
Je cherche un moyen de traduire les liens vers les messages FluxBB entrants vers les messages Discourse correspondants ? Je ne vois aucun moyen de réaliser cela avec Discourse standard, je suppose donc que je devrai créer un plugin d’un certain type qui répond aux liens FluxBB /viewtopic.php?id=##### et redirige vers le lien Discourse approprié. Si quelqu’un d’autre a de l’expérience dans la résolution de ce type de problème, j’aimerais beaucoup savoir comment vous avez abordé la question.
La plupart des scripts d’importation créent des permaliens qui gèrent les redirections. Je ne sais pas immédiatement si l’un d’eux le fait. Sinon, vous pouvez consulter l’un des autres pour trouver un exemple de code.
J’ai la même question, et je suis un peu confus au sujet de la réponse. Je cherche également à faire une importation importante de FluxBB.
Je vois qu’il existe une fonctionnalité Discourse appelée « Permalinks » ( How to make a redirect URL in a Discourse install? - #4 by cpradio ), donc nous disons qu’en créant ces éléments, Discourse pourrait prendre une URL de style FluxBB telle que « /viewtopic.php?id=((ancien id de sujet)) » et rediriger vers « /t/((nouveau slug de sujet))/((nouveau id de sujet)) ». Peut-être de même pour les messages individuels d’un sujet ? De même pour les URL de profils d’utilisateurs. (Nous aurons donc besoin de nombreux permaliens). Je vois la table de base de données pour les Permalinks.
Cela semble être une solution intéressante, mais l’importateur FluxBB ne crée aucun permalien. Je ne vois aucun code pour cela. En fait, je ne vois aucun code dans aucun des scripts d’importation pour faire cela (aucune mention du modèle ActiveRecord « Permalink »).
Je serais heureux de travailler à la modification de l’importateur FluxBB pour faire cela, mais y a-t-il un exemple dans l’un des autres importateurs ?
La seule chose que je vois dans le code dans ce sens est l’initialisation de « LookupContainer » et le stockage de tous les anciens ID et de leurs ID correspondants. Cela peut-il être utilisé pour créer de nombreux objets Permalink ?
Consultez l’importateur vbulletin (mais aussi answerhub, vanilla, mylittleforum, bbpress, drupal pour quelques autres - peut-être avez-vous utilisé la recherche sensible à la casse ou quelque chose comme ça), qui le fait dans la fonction import_topics (ignorez la fonction de fichier permalien). Vous voudrez du code qui ajoute le permalien et une permalink_normalization qui mappe l’URL fluxbb dans le permalien que vous avez créé.
Gah ! Vous avez raison. La recherche de mon IDE me jouait des tours. En fait, il y a plein d’exemples d’objets « Permalink » en cours de création. Je vais peut-être donc envisager d’ajouter cela à l’importation FluxBB.
Je suis curieux de savoir comment s’est passée votre grosse importation @alldritt. Eh bien, il semble que macscripter.net utilise toujours FluxBB, donc pas très bien ? Si vous avez remarqué que l’importateur FluxBB ne convertit pas très bien le bbcode, j’ai travaillé sur diverses corrections à ce sujet : Pull request en cours.
Il y a un chevauchement intéressant (et gênant) entre ces discussions, car FluxBB prend en charge le bbcode de la forme [post=123] pour lier à un autre message par son id (en référençant les anciens ids de message dans le système FluxBB source). Il sera plus facile de gérer cela si nous avons une solution pour rediriger ces ids.
Non. Les permaliens ne fonctionnent que pour les liens entrants, pas pour les liens internes. Vous devrez écrire quelque chose pour réécrire ces liens internes sous forme de citations Discourse. Il existe également des exemples à ce sujet.
J’ai tenté la conversion à plusieurs reprises et j’ai abandonné. Avec le temps, en passant à un Mac M1, j’ai perdu mon environnement de test Discourse et je n’ai jamais pris le temps de le recréer. J’espère revenir à ce projet dès que j’aurai un peu de temps libre. La gestion de la redirection des liens existants était un point sur lequel j’avais du mal. Je n’avais pas encore vérifié si tout le BBCode était correctement traduit. J’ai plus de 130 000 messages à convertir, ce qui est décourageant à vérifier.
J’espère que cela vous sera utile. Hier, j’ai travaillé à l’ajout de la fonctionnalité create_permlinks à l’importateur FluxBB.
Pour le moment, cela se trouve dans ma PR WIP. Voir le commit “Add Permalink creation logic to FluxBB importer”à la fin de cette liste. J’espère que tout cela sera fusionné à un moment donné, éventuellement dans un ordre différent (j’attends actuellement que quelqu’un examine cette PR de base comme point de départ).
Donc, cela crée des redirections pour quatre types d’URL FluxBB différents.
profile.php?id=<user id>
viewtopic.php?pid=<post id>
viewtopic.php?id=<topic id>
viewforum.php?id=<forum id>
Je pense que ces quatre couvrent tout ce que les gens voudront conserver comme liens fonctionnels. Qu’en pensez-vous ?
Pour revenir au sujet des liens internes spéciaux de FluxBB
Je n’allais pas essayer de les conserver comme liens internes dans le nouveau discourse. Solution paresseuse : ils pointeront vers les anciennes URL du forum FluxBB (en tant qu’URL complètes, donc liens externes) qui, grâce à ces permaliens, redirigeront ensuite l’utilisateur vers le bon endroit dans le nouveau discourse.
Je pense que votre solution paresseuse pourrait fonctionner. Vous pouvez trouver des exemples de réécriture des liens internes si vous le souhaitez, mais la paresse peut être une bonne chose.