migration Spip vers Drupal

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

je souhaiterai savoir si il est techniquement possible de transférer la version 1.7 de Spip vers drupal de manière relativement simple ? (dans le cas où cela serait possible, comment procédé svp ?)

En effet, je vais devoir travailler sur un site sous Spip ayant un grand nombre d'articles... Comparer à Spip le nombre de modules disponibles avec drupal sont beaucoup plus important, d'où mon idée d'éventuellement migrer vers Drupal.

Cordialement,

Martin

Version de Drupal : 

Faudrai creuser plus s'il n'existe pas un module spécifique, mais je sais qu'il y a un module d'import/export XML/HTML qui existe pour Drupal. Il pourrait servir de base à la migration...
Mais je connais pas SPIP ... ceci dit, créer un module export pour SPIP doit pas être bien méchant...
Voila déja une piste ;-)

Je l'ai fait avec un SPIP 1.9.2

C'est relativement simple, le schéma de donnée de SPIP est beaucoup plus simple que celui de Drupal, récupérer les informations est très facile.

Et pour faciliter encore plus la tâche, je dirais que le mieux à faire est de mettre les tables du SPIP directement dans la database du Drupal, et de faire un module Drupal pour récupérer et importer les données dans Drupal facilement, en utilisant cette méthode on peut profiter de tout le framework de Drupal.

C'est relativement facile :)

Cependant, deux problèmes se posent:
1) L'encodage des données en base dans SPIP est assez aléatoire, il y a souvent des caractères UTF-8 ou unicode tout cassés, pour réparer ça c'est assez hardu.
2) Le temps de faire la migration d'un site avec énormément d'articles ou d'utilisateur est trop long pour le temps maximal par défault d'éxécution de PHP alloué par Apache (défaut à 30 secondes sur la pluspart des distribution), j'ai donc fait un module Custom qui le fait de manière incrémentale, par lots de 300 articles, avec une interface Ajax pour vérifier l'avancement et le bon fonctionnement de la migration, qui permet de l'arrêter, reprendre, recommencer la migration.
3) La syntaxe d'entrée du corps des articles spip est un peu tordue, pour arriver à la convertir en HTML on the fly afin de récupérer un contenu lisible pour tous, j'ai dû bootstraper un SPIP dans le Drupal afin de pouvoir éxécuter ses méthodes de parsing pour récupérer le code HTML généré de spip.

Voilà, non en vrai c'est simple, le plus dur c'est d'outre passer le temps maximal d'éxécution PHP, mais avec une méthode pas trop idiote on y arrive bien.

EDIT: mon module est aujourd'hui codé pour un projet particulier, il y figure donc dedans des informations métiers que je ne peux pas divulguer, par contre, j'ai planifié d'en faire une version générique pour tout SPIP (sans modules bien sûr, les modules peuvent être aussi tordus que leurs auteurs) vers un Drupal générique (i.e. catégories spip vers taxo drupal, articles spip vers nodes drupal, et auteurs spip vers users drupal).

On peut effectivement le mettre en maintenance mode, ce n'est pas un soucis, c'est même rudement conseillé :)

Ça ne change rien au fait que le maintenance mode ne fait que couper l'accès au site à tous les utilisateurs sauf celui qui a l'uid 1.

En clair, ça ne change rien au problème du temps d'éxécution PHP, on ne vas pas s'amuser à le changer sur un Apache configuré par un administratur système parano, au risque de se voir faire étriper, ou sur un site dont on pas du tout l'accès à la configuration même du VHost. De plus, si une éxécution plante, il vaut mieux qu'on le sache assez vite, même en cours de migration.

Ma méthode n'est pas la meilleure, je ne pense pas, il existe pas mal d'autres alternatives, entre les imports XML (spip permettant de faire un export XML propre), et des scripts shell (ou tout autre langage) sur la machine pour aller taper en XMLRPC, on est pas à cours d'idées.

Cette solution était juste pour moi la plus simple car elle m'a permit d'utiliser le framework Drupal à fond, et juste ça (aucun autre script n'est nécéssaire, mis à part d'unpacker un SPIP dans le DocumentRoot Apache pour profiter de quelques unes de ses fonctions).

PS: et on a pas toujours l'accès en local non plus!

Je suis assez intéressée, je me demandais donc où ce projet en était avant d'envisager d'autres méthodes de migration.

Je suis prête à assurer les tests et à contribuer à la rédaction d'une doc si besoin.

Salut,
Un début de module pour une migration de SPIP vers Drupal 6 a été mis en ligne sur drupal.org à l'adresse suivante : http://drupal.org/project/spip2drupal
Je n'ai pas eu le temps de le tester mais il semblerait que cela fonctionne pour le moment avec des articles ne comportant que les champs basics : titre, texte, auteur. Les mots-clés ne sont pas encore gérés. Les rubriques sont transformées en taxo.

J'ai testé le début de module, sans trop de succès, d'autant que je ne voulais pas utiliser le node type de Drupal pour certains contenus.

Je viens de finir de migrer de SPIP et Dotclear vers Drupal. Pour la migration j'ai créé des squelettes SPIP qui m'ont généré directement du SQL pour peupler la base de Drupal. C'est pas mal de bidouillage, et ça demande de bien comprendre le schéma de la base de données de Drupal, mais c'est faisable.

Ah oui en effet bien vu le squelette qui génère le sql !

Du coup je me demande si un code PHP ne pourrait pas "remplir" les formulaires de saisie d'articles Drupal depuis un article SPIP genre je reprends/je reprends pas a la mano. Mon idée c'est de récupérer seulement une partie des articles donc la reprise serait par sélection interactive sur les articles à garder.
Je débarque et ne connais pas du tout la structure des pages Drupal. Ma réflexion en est justement à "je ferais bien de passer à Drupal" mais est-ce que je pourrai alors récupérer les articles d'un site vers l'autre ?

Bon, tout cela est très prometteur, effectivement dans un squelette SPIP on doit pouvoir faire énormément de choses. Merci encore missmopi !