L'un des changements de la migration de Dotclear 1.x vers Dotclear 2.0 est l'organisation différente des répertoires. En effet les images et les autres fichiers que vous souhaitez partager sont désormais rangés dans un répertoire nommé public alors qu’auparavant les images étaient rangées dans un répertoire… images et les autres fichiers dans un répertoire share.

Objectif : Les images dans les billets de l'ancienne installation doivent pouvoir continuer s'afficher dans les billets importés dans le nouveau blog. Autrement dit il faut maintenir l'existence des anciens chemins (ex. /dotclear/images/dotclear.png).

On peut alors suivre deux méthodes :

  • déplacer les images dans le nouveau répertoire public et modifier tous les chemins des images dans les billets, soit en les rééditant un par un, soit en effectuant un chercher/remplacer sur le fichier d'export avant de réimporter dans le nouveau blog, soit en ajoutant dans un fichier .htaccess une règle de redirection ou de rewrite rule pour que les chemins vers l'ancien répertoire pointent vers le nouveau ;
  • ne toucher à rien (ou presque).

Moi ça me fait peur de me tromper quelque part, et puis je suis une feignasse. Donc forcément j'ai utilisé l'autre solution : ne toucher à rien :

Fastoche !

Placez votre ancien répertoire images au même niveau que votre ancien répertoire images. Dans une installation « classique » de Dotclear, ça revient à mettre images dans le répertoire dotclear à côté de public.

Vous savez quoi ? C'est tout ! Le chemin vers ces images n'a pas changé, elles s'affichent sans sourciller dans vos billets. Elle est pas belle la vie ?

Et autres médias

Vous en ferez autant si vous aviez des vidéos, des fichiers offerts au téléchargement, etc. Il vous suffit de veiller à ce que l'ancienne hiérarchie des répertoires soit conservée. Il suffit donc en général recopier le répertoire share et l’ensemble de ses sous-répertoires à côté du répertoire images précédemment cité. Un peu de ménage dans le répertoire n’est pas non plus du luxe pour enlever ce qui ne vous servira plus (un certain nombre de plugins Dotclear 1 stockaient aussi dans share leurs paramétrages).

Soignons-nous

Si on veut une installation bien rangée, et donc beaucoup plus pratique à entretenir[1], il vaut quand même largement mieux, au final, regrouper tous ses médias dans un dossier public. Il vous faudra donc tranquillement un jour ou l'autre procéder au transfert de vos images ou autres fichiers dans les répertoires idoines. Les « combines » ReWriting ou RedirectPermanent, qui peuvent vous permettre de ne pas avoir à rééditer un par un tous vos anciens billets, feront l’objet d’un billet complémentaire… À suivre, donc.

Changer le chemin de ses fichiers

Si vous décidez de ne pas remettre les anciens fichiers à la même place, il faut envoyer ces fichiers à leur nouvelle place et en informer Dotclear. Vous devez d'abord déterminer l'ancien et le nouveau chemin de vos fichiers.

Si vous avez exporté votre blog Dotclear 1 mais que vous ne l'avez pas encore importé dans votre blog Dotclear 2, vous pouvez éditer votre fichier avec un éditeur de texte (et non un traitement de texte). Après avoir ouvert ce fichier dans votre éditeur de texte, utilisez sa fonction de remplacement pour remplacer l'ancien chemin des fichiers par le nouveau chemin. Par exemple remplacez /dotclear/images/ par /public. Sauvegardez le fichier pour importez-le dans Dotclear 2.

Si le blog Dotclear 2 contient déjà des billets, il va falloir modifier la base de données, c'est elle qui contient les billets. Rendez-vous sur votre outil d'administration SQL, il est souvent fourni par l'hébergeur du blog. Avant d'aller plus loin, faites une sauvegarde de la base de données, par sécurité. Ensuite, entrez cette commande SQL en remplaçant *1* et *2* par les valeurs qui conviennent :

  • *1* est à remplacer par l'ancien chemin
  • *2* est à remplacer par le nouveau chemin
UPDATE dc_post SET post_excerpt = replace(post_excerpt,'*1*','*2*');
UPDATE dc_post SET post_excerpt_xhtml = replace(post_excerpt_xhtml,'*1*','*2*');
UPDATE dc_post SET post_content = replace(post_content,'*1*','*2*');
UPDATE dc_post SET post_content_xhtml = replace(post_content_xhtml,'*1*','*2*');

Et voilà, vos fichiers seront à leur place et Dotclear pourra y accéder.

(merci à Mirovinben pour avoir grandement inspiré cette dernière partie)

Notes

[1] la feignasserie aussi, ça s’entretient !