Migration Dotclear1.x vers Drupal
Bon j'ai pris un peu de temps pour migrer tout ça, je vous fait part des quelques SQL et autres trucs que j'ai du utiliser pour migrer à peu près correctement mon blog de Dotclear version 1.x (c'était même une 1.1 ou quelque chose comme ça) vers un drupal 6.17.
Tout d'abord j'ai installé un drupal et j'ai comparé les DB. Assez différentes mais au final le mapping se fait encore bien. J'ai rapatrié ma DB de prod en local, et j'ai appliqué ce script :
-- -- récupération des noeuds -- -- autoincrement dynamique PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt; from dc_post order by post_id; -- -- récupération des urls d'accès aux noeuds -- from dc_post order by post_id; -- -- récupération du contenu associé aux noeuds -- PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt; from dc_post order by post_id; -- -- récupération des commentaires -- PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt; from dc_comment order by comment_id; -- -- récupération des catégories -- PREPARE stmt FROM @s; EXECUTE stmt; DEALLOCATE PREPARE stmt; from dc_categorie order by cat_id; from term_data; -- -- liens catégories <-> noeuds -- from dc_post order by post_id;
Ensuite il reste plus qu'a exporter ces données pour les importer dans la base drupal (S'il vous plait faites ça sur un serveur de test ... on sait jamais !)
Après ça il a pas fallu grand chose, juste une url rewrite qui me passe
* mes anciennes URL : blognote-info.com/index.php?2009/05/21/647-poc-design-website-accelere-par-tokyocabinet-part-2
* vers mes nouvelles : blognotes-info.com/fr/n647/poc-design-website-accelere-par-tokyocabinet-part-2
plus classe non ?
C'est fait avec ça :
RewriteCond %{QUERY_STRING} ^[0-9]{4}/[0-9]{2}/[0-9]{2}/([0-9]+)-(.*).*$ RewriteRule .* /fr/n%1/%2? [L,R]
Voila un peu prétentieux comme rewrite mais ça passe.
Ensuite dans drupal j'ai installé plein de modules:
* Locale (oui j'ai l'intention d'avoir du contenu anglais sur mon site !)
* PHP Filter qui m'a permis d'avoir la liste des catégories basée sur la taxonomy drupal (voir plus bas)
* Search (ben ça peut être pratique ;-))
* GeshiFilter pour le code
* Token, Pathauto et GlobalRedirect pour SEO et nice URL (à utiliser conjointement avec les URL alias à activer)
La liste des catégories est basée sur la taxonomie (comme dit précédemment) et est assez simple au final:
* On crée un nouveau block
* Input method : php
* Et voila le code php a y insérer ($vid correspond à l'id du vocabulaire utilisé pour les catégories):
<?php $vid = 1; $terms = taxonomy_get_tree($vid); foreach ( $terms as $term ) { $count = db_result(db_query("SELECT COUNT(nid) FROM {term_node} WHERE tid = %d", $term->tid)); $items[] = l($term->name, "taxonomy/term/$term->tid") . " ($count)"; } ?>
J'ai encore pas mal d'autres modules en test, et d'autres à installer. J'y vais au fur et a mesure pour bien décortiquer les trucs, mais je dois dire que jusque là ça se passe plutôt bien !
La suite au prochain épisode !
