
Un bon CMS qui aime frôler la mort
Joomla! est un CMS – système de gestion de contenu – qui permet de gérer un site web. Alors qu’il vient de fêter ses 4 ans le premier septembre dernier, le moins que l’on puisse dire est que sa petite enfance a été particulièrement chaotique, mais c’est finalement un peu le lot de ces bons outils fournis gratuitement à la communauté. Il faut aussi en être un sacré fan ou/et aimer le risque pour l’avoir utilisé depuis ses débuts….
Ce n’est pas un hasard si on devient fan de Joomla! : une fois la bête apprivoisée c’est un formidable gestionnaire de site, qui permet notamment de réaliser un des objectifs ultimes d’un bon site web : faciliter l’animation d’un site en rendant autonomes et efficaces les contributeurs et rédacteurs du site, qui vont pouvoir gérer avec aisance la création et le suivi du contenu de leur site.
Dans mon cas personnel, j’ai failli abandonner Joomla! il y a peu. Mais finalement j’ai réussi à migrer mes sites vers la nouvelle version avec très peu de pertes et de dégâts. Je vais y revenir ci-dessous, dans un style se situant entre le tutoriel et le retour d’expérience sur la migration. En attendant, un peu d’histoire…
De Mambo Open Source à Joomla! : un passage en douceur…
La plupart des sites webs que je conçois et administre fonctionnaient à partir de 2003 avec le CMS Mambo Open Source. En 2005, Mambo est dans la tourmente, et la branche libre et open source du CMS devient Joomla!. Quelques temps plus tard, je réalise la migration de mes sites de Mambo vers Joomla!. Le code informatique des 2 branches est alors très proche à ce moment là, et la migration du contenu, templates, composants, modules et plugins (encore appelés « mambots » à l’époque) est donc facile.

De Joomla! 1.0 à Joomla! 1.5 : une violente rupture sous la douce apparence d’un + 0.5
La communauté des développeurs et contributeurs du projet réalise un formidable travail et fait preuve d’une grande dévotion…. et de patience, face à des utilisateurs aux questions déjà traitées plusieurs fois dans les forums, mais peut être est-ce la rançon du succès ? Alors que la certains utilisateurs (comme moi) dormaient tranquillement pendant que leurs sites ronronnaient aussi tranquillement sous Joomla!, nous avons eu un réveil difficile début 2008.
Avec la sortie de la nouvelle 1.5 de Joomla!, c’est un virage brutal dans les fondements du framework, marquant une rupture avec les branches Mambo/Joomla! 1.0. Conséquence : les anciens templates, composants, modules et plugins deviennent incompatibles entre les versions 1.0.x et 1.5.x de Joomla! Un plugin Legacy Mode est censé permettre la compatibilité pour les différents modules, composants et mambots/plugins, mais ce plugin ne fonctionne pas systématiquement avec certains d’entre eux. En ce qui concerne les templates, les anciennes versions ne fonctionnent plus. Bref, C’EST L’HORREUR…. . On a forcément une pensée pour les généreux créateurs de templates, composants, plugins et modules, mettant à disposition leur travail gratuitement : c’est tout leur travail qui est remis en question…
Un an et demi pour enfin disposer du nécessaire pour envisager une migration de Joomla! 1.0.x à Joomla! 1.5.x
Au début, les procédures de migrations sont réduites aux fonctions natives de Joomla!, c’est à dire : sections et catégories, contenus des articles, groupes et utilisateurs/groupes, liens web, contacts…. Le composant de migration Migrator pour Joomla! 1.0.x. est le composant officiellement recommandé. Progressivement, des plugins complémentaires pour Migrator sont mis à disposition pour pouvoir migrer les données des composants : il faut laisser le temps aux développeurs de faire les adaptations. Tout cela représente un énorme travail qui prendra du temps… En ce qui me concerne, le composant Migrator se révèlera inefficace, j’aurai beaucoup de mauvaises surprises sur l’import des données, j’ai donc abandonné cette piste.

Heureusement, depuis quelques temps, le composant Mtwmigrator, permettant l’import de données directement depuis Joomla! 1.5 en allant récupérer et convertir les données depuis la base de l’ancien site sous Joomla! 1.0.x., s’est révélé efficace pour mes sites web, malgré encore quelques imperfections.
Certains composants pour Joomla! 1.5, eux, fonctionnent très bien avec les données contenues dans les anciennes bases, d’autres intègrent des fonctions d’importations des données de leurs anciennes versions ou même de données de composants équivalents fonctionnellement, j’y reviendrais plus bas.
Dans mon cas il aura donc fallu attendre un an et demi pour que la migration devienne donc réellement envisageable… ça tombe bien, puisque le support de la branche 1.0 de Joomla! a été abandonné officiellement le 22 juillet dernier.
Le plus gros frein au changement : d’excellents composants pour Joomla! 1.0 qui ne fonctionnent plus et ne sont pas mis à jour pour Joomla! 1.5

Même avec le mode de compatibilité pour les anciennes versions, certains composants (et leurs modules et plugins associés) ne fonctionnent pas sous Joomla! 1.5. Pour les développeurs, la mise à jour de leurs composants pour les rendre compatibles peut être un énorme boulot : certains projets seront alors abandonnés... C’est le cas de Zoom Media Gallery pour la gestion de galeries d’image, incompatible avec Joomla! 1.5, même en Legacy Mode. A mon sens, Zoom Media Gallery était de très loin le meilleur gestionnaire de galerie d’image pour Joomla!, et le seul composant avec lequel j’arrivais à faire tourner l’excellent Java JUplad, facilitant la vie des contributeurs de site pour uploader des fichiers images sur leur site web. Progressivement, de nouveaux composants de galerie de très bon niveau ont vu le jour pour Joomla! 1.5, citons parmi ceux-ci Phoca Gallery et Joomgallery. J’ai choisi ce dernier pour remplacer l’obsolète Zoom Media Gallery, mais sans avoir la possibilité d’importer directement les anciennes données, sauf à bidouiller des scripts de migration. Mais j’en ai marre des nuits blanches…

Le composant YaNC, considéré par beaucoup comme le meilleur système de Newsletter pour Joomla!, n’évolue plus 2 ans. Mais il le faut pas désespérer, puisque le développeur semble se décider à travailler sur une version 2 de son composant, pour Joomla! 1.5. Mais la roadmap reste incertaine. On peut se replier vers certains composants alternatifs avec des capacités d’import d’autres composants de Newsletter, comme Acajoom, mais en ce qui me concerne, je m’étais bien attaché à YaNC. C’est pour cela que moyennant quelques recherches et bidouilles, j’ai réussi à le faire tourner sur Joomla! 1.5, voir mon billet « Faire fonctionner le composant de newsletter YaNC sous Joomla! 1.5« .
Dans tous les cas, le fait que les composants YaNC et Zoom Media Gallery permettent des fonctionnalités parmi les plus importantes sur mes sites web, et qu’ils soient à l’abandon du fait de leur incompatibilité avec Joomla! 1.5, a failli me pousser à abandonner complètement Joomla!. Je pense que je ne suis pas le seul, quand on sait la place que prennent désormais d’autres CMS, également Open Source et gratuits…
Réaliser la migration vers Joomla 1.5
J’attire l’attention au lecteur sur le fait que le contenu ci-dessous n’est pas une procédure officielle, il s’agit simplement de faire partager (à toutes fins utiles) mon expérience personnelle en décrivant les procédés qui m’ont permis de réussir le migration de 2 sites webs :
- Le site du DODO Surf Club sur un hébergement mutualisé chez OVH PHP 5.2.10
- Le site des Pénibles de Mauvezin sur un serveur dédié chez Haisoft PHP 5.1.6

Installer un Joomla! 1.5
Tout d’abord, il vaut mieux commencer à faire une sauvegarde en local des fichiers et de la base de données du site en vieille version Joomla! 1.0.x., en laissant une version en ligne, pour faire plus tard l’importation des données, et des comparaisons de l’ancienne et la nouvelle version du site.
Il faut ensuite créer une nouvelle base de données, en notant les paramètres d’accès à cette base de données, puis installer un Joomla 1.5 en partant de zéro. Il vaut mieux l’installer sur le serveur d’hébergement (par exemple dans un sous répertoire du site actuel), c’est mieux que faire l’installation en local, ça évitera des problèmes de transfert liés aux différentes configurations par la suite.
Une fois le nouveau Joomla! 1.5 installé, il faut aller dans l’administration et activer le plugin Legacy Mode, afin de rendre possible l’installation de composants, modules, etc. de l’ancien Joomla! 1.0 compatibles avec la version 1.5.
Migrer les fichiers de contenu de Joomla! 1.0 à Joomla! 1.5
Il faut ensuite transférer le contenu de l’ancien répertoire /images
vers le nouveau. Il ne faut pas transférer les fichiers qui ont été uploadés avec les différents composants du site existants (fichiers DOCman, images et fichiers issus d’attachement depuis un forum, fichiers de vidéos, mp3, etc.). Il faudra les transférer par la suite, dans les bons répertoires correspondants, une fois que les nouveaux composants seront installés sur la nouvelle version.
Je n’ai récupéré aucun fichier au niveau des composants et mambots/plugins.
Le cas particulier des fichiers de module

Concernant les fichiers liés aux modules, c’est peu plus compliqué et quelquefois au cas par cas :
- Pour les modules dont le fonctionnement est lié à des composants spécifiques, la suppression ou le remplacement de ces modules dépendra de la version du composant qu’on installera sur le nouveau site, de leur compatibilité, de la mise à disposition de nouveaux modules adaptés aux nouveaux composants installés, etc.
- J’ai choisi de ne pas récupèrer les fichiers des modules pour lesquels il existe une nouvelle version pour Joomla! 1.5 : pour trouver les nouvelles versions il faut faire des recherches sur le web (aller voir le lien web sur la ligne de descriptif du module, aller voir sur le site officiel des extensions) et récupérer les fichiers d’installations des nouvelles versions des modules pour Joomla! 1.5.
- Pour les vieux modules qui n’ont pas de versions pour Joomla! 1.5, la plupart tourneront en Legacy Mode sur la nouvelle version de Joomla! en 1.5. Il faut récupérer les fichiers et répertoires associés de l’ancienne version. Ensuite, il faut savoir que dans la version 1.5 de Joomla! les fichiers de module ne sont pas installés dans le répertoire racine
/modules
. Chacun des modules est dans un sous-répertoire spécifique sous/modules
, portant le même nom que le fichier PHP principal du module. Par exemple si vous avez un fichiermod_birthday.php
, il faudra créer un répertoire «mod_birthday
» dans le répertoire/modules
du nouveau Joomla!., et y transférer ensuite le fichiermod_birthday.php
etmod_birthday.xml
, et éventuellement le répertoire associé au module s’il existe (avec son contenu). Pour les paramètres des modules, ça se passe dans la base de données (voir plus bas).
Convertir son template Joomla! 1.0 en Joomla! 1.5
Tout d’abord, copier le (ou les) répertoires de votre (ou vos) ancien(s) template(s) vers le répertoire /templates
de votre nouvelle installation Joomla! 1.5.

Une partie du code des templates pour Joomla! 1.0 (patrons de mise en page de votre site) devient incompatible avec Joomla! 1.5. En revanche, aucun problème avec les feuilles de styles CSS et images des templates : elles sont exploitables sans modifications. Dans mon cas, l’activation du plugin de compatibilité Legacy Mode avec Joomla! 1.0 n’aura aucun effet sur mes anciens templates : aucun ne fonctionnent. Pour les mettre à jour, ce sera « à l’ancienne », mettre les mains dans le cambouis, c’est à dire dans le code PHP, avec un bon vieil éditeur de texte. Ce n’est pas trop sorcier, il faut remplacer le code spécifique pour les commandes d’appels de fonctions Joomla!, faire des tests, chasser les lignes de code obsolètes, etc.
A la sortie de Joomla! 1.5, je ne trouve aucun tutoriel satisfaisant, c’est très énervant... et surprenant, quant on connait l’effervescente communauté d’utilisateurs de ce CMS… A croire que beaucoup d’entre eux avaient comme moi la gueule de bois en janvier 2008 avec la sortie de Joomla! 1.5. Ceux qui n’ont pas envie d’aller dans le code sont obligés d’utiliser de nouveaux templates, ou bien payent des prestataires pour réaliser la mise à jour de compatibilité de leur ancien template.
Heureusement, il y a des gens sympas : voir ce tableau récupéré dans un doc joint dans une discussion sur le forum francophone de Joomla! (j’y ai réalisé quelques modifications) faisant un petit inventaire des modifications à faire dans les fichiers de template (TemplateDetails.xml et index.php) :
Joomla! 1.0 |
Joomla! 1.5 |
TemplateDetails.xml | |
<mosinstall> Contenu de fichier </mosinstall> | <install > Contenu de fichier </install> |
Index.php | |
<?php defined( « _VALID_MOS » ) or die( « Direct Access to this location is n $iso = split( « = », _ISO ); ?> <!DOCTYPE html PUBLIC « //W3C//DTD XHTML 1.0 Transitional//EN » « htt <html xmlns= »http://www.w3.org/1999/xhtml »> <head> <?php if ( $my>id ) { initEditor(); } mosShowHead(); ?> <meta httpequiv= »ContentType » content= »text/ html; <?php echo _ISO; ?> » <link href= »<?php echo $mosConfig_live_site. »/ templates/ ».$mainframe>get <link href= »<?php echo $mosConfig_live_site. »/ templates/ ».$mainframe>get </head> | <!DOCTYPE html PUBLIC « //W3C//DTD XHTML 1.0 Transitional//EN » « htt <html xmlns= »http://www.w3.org/1999/xhtml » xml:lang= »<?php echo $this> <head> <jdoc:include /> <link rel= »stylesheet » href= »templates/_system/css/general.css » stylesheet » href= »templates/<?php echo $this>template ?>/css/te </head> |
_VALID_MOS | _JEXEC |
echo ‘Hello‘ | echo JText::_( ‘Hello’ ) |
La racine du site (url) | |
<?php echo $mosConfig_live_site; ?> | <?php echo $mainframe>getCfg(‘live_site’); ?> |
$mosConfig_live_site | $this>url |
Template par défaut | |
<?php echo $cur_template; ?> | <?php echo $this>template ?> |
$mainframe>getTemplate() | $this>template |
Pathway – Fil d’ariane | |
<?php mosPathWay(); ?> ou <?php include « includes/pathway.php »; ?> | <jdoc:include type= »modules » name= »breadcrumb » /> (créer et activer le module breadcrumb dans le backoffice de Joomla!) |
Date | |
<?php echo mosCurrentDate (); ?> | <?php echo JHTML::Date( ‘now’, ‘%d | %m | %Y’ ); ?> |
Affichage de composant | |
<?php mosMainBody(); ?> | <jdoc:include type= »component » /> |
Chargement des modules | |
<?php if (mosCountModules(‘top’)) { ?> <?php mosLoadModules ( ‘top’ ); ?> <?php } ?> | <?php if($this>countModules(‘top’)) : ?> <jdoc:include style= »table » /> <?php endif; ?> |
<?php mosLoadModules ( ‘right’,2 ); ?> | <jdoc:include type= »modules » name= »right » style= »xhtml » /> |
Styles d’affichage des modules | |
1 2 3 | style= »table » style= »horz » style= »xhtml » style= »rounded » |
Migration directe de données de Joomla! 1.0 à Joomla! 1.5
Certains composants pour Joomla! 1.5 fonctionnent très bien avec les données telles qu’elles existent dans les anciennes bases, ou bien ils intègrent des fonctions d’importations des données de leurs anciennes versions, au moment de l’installation : le gestionnaire de communauté Community Builder, Kunena Forum (qui exploite sans problème les données du composant de forum Fireboard, son prédécesseur), le gestionnaire multilingue Joomfish, le gestionnaire de jeux vidéos d’arcade PUarcade.
D’autres composants intègrent des fonctions d’importations de données de composants équivalents fonctionnellement. Dans mon cas le composant de messagerie privé UddeIM importe sans problème les messages issus de l’ancien composant JIM. Le composant de commentaires Jcomments importera les commentaires articles des composants AkoComments, mXcomments, (cf. image ci-dessous) , etc.

Pour tous ces composants, il faudra donc récupérer la structure et les données des tables concernées dans votre ancien site Joomla: 1.0, et les intégrer directement dans votre nouvelle base sous Joomla! 1.5. Ces fonctions sont faciles à réaliser avec l’utilitaire PhpMyAdmin, qui est mis à disposition en ligne par la plupart des hébergeurs.
Migration des autres données à l’aide d’un composant

Pour les données des fonctions natives de Joomla! (structure de menus, paramètres de modules, sections, catégories, articles, contacts, liens webs, sondages…) et pour certains composants, j’ai utilisé le composant Mtwmigrator.
Une fois le composant installé dans votre nouveau Joomla 1.5, il faut aller dans l’écran de configuration du composant (cf. image ci-dessous, cliquer sur celle-ci pour l’agrandir), saisir les données d’accès à votre ancienne base de données de votre ancien site en Joomla! 1.0 (serveur/host, nom de la base, identifiant et mot de passe de connexion à la base : ces informations sont disponibles dans le fichier configuration.php à la racine de votre ancien site).

Sur la partie droite de l’écran de configuration du composant, vous avez la possibilité de rajouter un import pour certains composants. Dans mon cas, je n’ai utilisé que l’import des données du composant de gestion de fichiers DOCman (à noter, ce composant ne dispose pas encore de version pour Joomla! 1.5, mais il fonctionne en Legacy Mode). Je ne me suis pas servi du composant Mtwmigrator pour l’import des données des composants Community Builder, Kunena Forum, Joomfish et PUarcade : je suis passé par l’import direct (voir paragraphe précédent).
Pour information, j’avais auparavant essayé d’importer les données de Community Builder avec Mtwmigrator, et ça n’avait pas marché (peut être à cause des champs additionnels dans les tables, générés par certains plugins de Community Builder ?). Dans mon cas, l’import direct des données (voir paragraphe précédent) pour Community Builder a parfaitement fonctionné.
Certaines fonctions de Mtwmigrator sont très efficaces. Par exemple, au niveau de l’import des articles, il récupère parfaitement les informations, et convertit même l’ancienne balise {mosimage}
en lien vers les bonnes images.
Import des données de modules
En ce qui me concerne, le seul point noir concerne les modules. L’importation des données n’a pas marché, et cela sur les 2 sites que j’ai migré. Il a fallu donc faire un peu de bidouillage, au niveau des données des tables mos_modules
et mos_module_menu
. J’ai importé les données (pas la structure) des anciennes tables du site sous Joomla! 1.0, et fait un petit « UPDATE » sur les champ ID et MODULEID pour rajouter la valeur +10 200 :
UPDATE jos_modules SET id=id+10200
UPDATE jos_modules_menu SET moduleid=moduleid+10200
J’ai ensuite inséré ces données dans la base de données du nouveau site sous Joomla! 1.5 en veillant bien de ne pas écraser les valeurs existantes. Par bonheur, les structures de ces tables n’ont pas changé entre Joomla! 1.0 et Joomla! 1.5, ce qui fait que l’insertion de données de l’ancienne base est possible sans manipulation.

Ensuite, rendez-vous dans le panneau d’administration de Joomla! 1.5, il faut faire des tests et des modifications de paramétrages sur les modules, c’est du cas par cas. Les modules « utilisateurs » (custom) sont récupérés sans problème. En ce qui concerne les modules utilisateurs qui contiennent du code provenant de sites externes (javascript ou autre, c’est souvent le cas par exemple quand on veut installer un petit widget météo…), il faudra installer le module Custom Code for Joomla 1.5.
Installation des plugins
Dans la mesure du possible, il est recommandé d’installler les plugins les plus récents.
Dans le cadre de la migration de mes sites, il était important d’installer le plugin MosModule, qui fonctionne en en Legacy Mode, et permet d’afficher des modules dans des articles, technique que j’ai largement utilisée sur mes sites.
Bonne surprise, la dernière version (2.2.2) du plugin JCE Utilities, qui permet entre autres choses d’afficher de beaux effets Lightbox (exemple ci-dessous) sur les images des articles, fonctionnera parfaitement avec les articles importés qui contiennent des tags de classes antérieurs des anciennes versions de JCE Utilities. Attention, j’ai remarqué qu’avec l’ancienne version de JCE Utilities, la 2.2.1, les effets de Lightbox du composant de galerie d’images Joomgallery ne fonctionnaient pas (aucun souci avec la version 2.2.2 de JCE Utilities, bien sûr).

Même chose pour le plugin AllVideos, qui permet d’insérer des vidéos dans les articles (fichiers vidéos internes ou vidéos issus de services externes tels YouTube, Dailymotion, etc.) : les nouvelles versions pour Joomla 1.5 interprèteront bien les balises intégrées dans vos articles issus d’un import, les vidéos s’afficheront donc sans problèmes. Au passage, je signale l’existence d’un package composant/plugin/module appelé AllVideos Reloaded, qui est conçu sur le base d’AllVideos, qui facilite l’insertion de vidéos dans un site Joomla!.

Ajustements de paramètres après l’import de données
Après l’import des données, il y a des ajustements à réaliser : certains liens de menus vers des composants ne fonctionnent plus, il faut les recréer. C’est le cas du composant natif de contact par exemple. Bizarrement, j’ai également remarqué que les pages de contacts ne s’affichaient plus. Il suffit d’aller dans le panneau d’administration, ouvrir et sauver chaque formulaire de contact sans les modifier pour qu’ils s’affichent de nouveau sur le site (sans doute un champ est mis à jour dans la base de données quand on sauve le formulaire).

J’ai eu également quelques soucis avec le composant de gestion multilingue Joomfish, il a fallu bidouiller pas mal de paramètres pour que la gestion multilingue fonctionne à nouveau.
Autre correction à réaliser, j’ai remarqué que dans les articles certains liens vers d’autres articles étaient encore sur l’ancien modèle Mambo (…)option=content(…), ces liens ne fonctionnent plus. Il a fallu donc extraire les données de la table jos_content, faire un remplacement de la chaine « option=content » par la chaine de caractère « option=com_content », puis restaurer les données dans la table avec PhpMyAdmin (pour l’édition de texte, j’utilise l’éditeur freeware PSPad).
Epilogue
Avec la fin du support de la branche 1.0 de Joomla!, la sortie ces dernières semaines d’une nouvelle version de Joomla! (la 1.5.14), la fiabilité accrue des fonctions de migration, les nombreux composants maintenant disponibles pour Joomla 1.5, cette rentrée 2009 est finalement une bonne période pour faire sa migration de site Joomla! 1.0 vers Joomla! 1.5. Selon moi le point noir concerne les modules, comme je les ai évoqué plus haut : j’ai réussi leur migration, mais le procédé a été un peu fastidieux. J’espère que mon exposé sera utile à certains d’entre vous. Les deux sites webs sur lesquels j’ai réalisé la migration ces derniers jours sont le site du DODO Surf Club et le site des Pénibles de Mauvezin.
- La discussion « [News] – Une migration facile! » sur le forum joomla.fr.
- Le site francophone de Joomla! : https://www.joomla.fr
Bon Joomla!
Répondre à Fabrice Annuler la réponse