Accueil / Systèmes de gestion de contenus / Transfert des articles, catégories, et menus, de joomla 2.5 vers joomla 3.3, avec phpmyadmin

Transfert des articles, catégories, et menus, de joomla 2.5 vers joomla 3.3, avec phpmyadmin

Joomla 2.5 ou Joomla 3.x ?

J’ai un site web sous joomla en version 2.5 et sachant que cette version arrive à son terme en matière de mise à jour et de support, j’ai donc décidé de passer en version 3 (3.3.6 pour être plus précis). Comme j’ai un clone de mon site sur mon PC, j’ai d’abord effectué un test de mise à jour sur celui-ci. Je n’étais pas sans ignorer qu’une bonne compatibilité des extensions devait être contrôlée. Mon but , consistait en fait, à construire du neuf avec du  vieux, uniquement avec les articles, les catégories et les menus. A partir du moment où vous pouvez les récupérer, vous aurez déjà une grosse partie du site à ne pas refaire. Concernant les extensions,  il sera toujours possible par la suite d’installer des versions compatibles avec la version 3 de Joomla.

Au cas où ce n’est pas possible, il faudra:

  • trouver une extension qui a la même fonction (on a rarement une seule offre sur un même sujet),
  • s’en passer (arrgh : oui, je sais, c’est dur :-(  ) ,
  • la développer ou la faire développer selon vos compétences.

Depuis la sortie de la version 3.2, il est possible d’installer des extensions à partir de l’administration du logiciel :

Administration des extensions joomla
Vous avez directement accès à la librairie de la version anglophone.

 

 

 

 

 

accueil-extensions-joomla-français

 

Il existe également un site internet francophone :

 

 

 

Vous trouverez sur internet quelques articles pour faire évoluer votre version de Joomla. La méthode que j’utilise n’est certainement pas la meilleure et la plus aisée. Cependant , elle peut servir de porte de sortie si vous rencontrez des problèmes de transferts compliqués et que vous tenez avant tout à récupérer la base de votre site web que constituent les articles, les catégories et les menus.

 

Quels sont les différents outils qui vont nous permettre d’effectuer ce transfert de données ?

 

  •  LA BASE DE DONNEES

Joomla fonctionne à l’aide d’une base de données ; vous en êtes informés quand vous effectuez son installation :
Celle-ci va contenir entre autres choses vos articles et vos menus. Elle contiendra des articles et des menus si vous avez utilisé les données d’exemples lors de l’installation du système de gestion de contenu.
page d'installation de joomla 3 au niveau de la base de données

 

 

 

 

 

 

 

 

 

 

 

  • PHPMYADMIN

Phpmyadmin est l’interface qui va vous permettre de gérer une ou plusieurs bases de données. Je l’ai retrouvée chez des hébergeurs comme Planethoster ou OVH, que ce soit en serveur mutualisé ou  dédié. C’est à partir de cette interface que nous allons effectué des transferts d’articles, de catégories et de menus.

  • WAMPSERVER

Wampserver est l’équivalent d’un serveur que vous mettriez en service chez vous , sur votre ordinateur, et,  associé à Windows (parce qu’il existe une version pour Linux et une version pour Mac). Il vous permet en ce qui nous concerne d’installer Joomla « localement », ce qui évite d’effectuer des modifications sur un site en ligne. Deux langages informatiques sont mis en évidence : le php et le sql (mysql est un serveur de bases de données relationnelles SQL  dixit wikipédia).

Comme ce sont des langages qui évoluent , vous trouverez des versions numérotés sur wampserver et vous pourrez les comparer avec les versions existantes qui font tourner votre bdd en ligne—> infos dans l’administration de votre CMS à la page informations système. Normalement il devrait y avoir compatibilité, mais je vous préviens au cas où vous auriez des problèmes particuliers que vous avez du mal à comprendre (Oops!!!).

Alors, comment procède-t-on ?

De façon très résumé :

  1. Installer Joomla 3 (la dernière version disponible à l’heure où j’écris mon article) en local (wampserver),
  2. Avoir accès à Phpmyadmin , qui contient les datas de votre site en ligne,
  3. Se connecter au Phpmyadmin fourni d’office avec wampserver et à la base de données joomla version 3xx,
  4. Exporter ses articles, catégories et menus de la BDD en ligne à la BDD en local,
  5. Vérifier que tout fonctionne bien.

L’évolution de Joomla, de la version 2.5 à la version 3 entraîne logiquement de nombreux changements, afin notamment de faciliter son usage. Des changements sont également intervenus au niveau de la base de données. Il me faudra en tenir compte afin d’assurer la compatibilité ascendante.

Si je n’avais pas déjà une certaine aisance avec  phpmyadmin, la connaissance des bases du langage mysql, savoir où chercher les informations que je souhaite récupérer, et, remarqué une certaine continuité dans la structure de la base de données, je ne me serais pas lancé dans ce processus de transferts. Remarquez, si vous suivez un des tutoriels mis à votre disposition sur la toile par quelques âmes charitables, vous vous rendrez compte que l’utilisation de phpmyadmin ne doit pas vous effrayer. En outre vous avez  la possibilité de sauvegarder et restaurer vos datas avant toute modification grâce :

  •  aux sauvegardes de votre site internet sur votre serveur,
  • à l’utilisation de composants de sauvegarde, genre Akeeba backup
  • à l’exportation de votre base de données via « sql » ou « les opérations », dans phpmyadmin (si elle « ne pèse  » pas trop car sa réinstallation peut générer des soucis vis-à-vis des valeurs du fichier php.ini).

1) Les tables de Joomla 

La bdd créée à l’issue de l’installation est composée de plusieurs tables, elles-mêmes composées de plusieurs lignes ou entrées.

exemples de tables sous joomla 3

 

 

 

 

 

Les tables qui nous concernent sont les tables :

  • « préfixe de table_categories –> pour importer les catégories
  • « préfixe de table_content     –> table contenant les articles
  • « préfixe de table_menu        –> liée au menus
  • « préfixe de table_assets       –>  cette table concerne le système de gestion des autorisations dans Joomla

IMPORTANT :

1.1) si vous avez créé un ou plusieurs types de menus particuliers , pensez à les reproduire car ceux-ci seront sans doute associés à votre table de menus

 

 

 

 

 

1.2) De même, j’ai tenu compte du fait que les clés primaires de la table « assets » se retrouvent dans les tables « content » et « catégories », c’est pourquoi j’ai exporté les entrées de la table « assets » liées aux entrées des autres tables.

colonne assets id dans la table content de joomla

 

 

 

 

 

 

 

 

1.3) Lorsque vous affichez votre base de données il y a deux colonnes qui retiennent l’attention :

  • la colonne « type » :
    la colonne « type » concerne le moteur de stockage des données. Le site en ligne joomla 2.5 utilise le moteur MYisam tandis que joomla 3.3 requiert le moteur Innodb (pour en savoir plus : http://sql.sh/1548-mysql-innodb-myisam).
    Par précaution, j’ai transformé les tables joomla3.3 concernées en MYisam (même si je pense que c’est inutile) avant le transfert. J’ai effectué cette opération à l’aide de la commande sql Alter (http://sql.sh/cours/alter-table).
  • la colonne « interclassement » :
    est lié au type d’encodage des caractères : l’utf8_general_CI permet l’encodage des caractères accentués. Vous avez peut-être remarqué que certains sites web, blogs ont des point d’interrogations ou des caractères bizarres ; il y a de grandes chances pour que ce soit du à un mauvais encodage ou à une non déclaration de type d’encodage dans le code source.

Les tables du site « online » et du site « version wamp » ont donc le même encodage et les tables « d’import-export » ont maintenant le même « type » (je remettrai les tables du site internet local en Innodb par la suite).

2)L’exportation des entrées

  •  vous cliquez sur la base qui contient les données à exporter
  • vous cliquez sur la table à exporter
  • vous sélectionnez les entrées que vous voulez récupérer
  • vous cliquez sur exporter

exportation d'entrées d'une table joomla

 

 

 

 

 

 

 

 Important : si vous n’exportez pas entièrement la table, cliquez sur l’icône exporter en bas de table. En effet, vous remarquerez qu’il est indiqué : « pour la sélection » ; cela veut dire que vous n’exporterez que les lignes sélectionnés (cochées) sinon vous exporterez tout.

Remarque : vous allez vous retrouver avec une table  » yzx_content » (la table exportée) et une table « hvz_content » (la table présente sur le site en local) et la finalité consistera à insérer les entrées de la première dans la seconde.

 

3) Modifications à faire obligatoirement après transfert et avant insertion

3.1) Comparaison des structures des tables

Si vous regardez une table en détail, il y a des lignes et des colonnes. Les colonnes représentent la structure de la table. En changeant de version, les développeurs de joomla ont effectué des changements au niveau des colonnes. Il faut donc rendre le fichier exporté compatible d’une version à une autre afin d’éviter des erreurs.

Exemple :

concernant la table des articles, il est déjà écrit que la colonne « title_alias » sera dépréciée à partir de la version 3.0 de Joomla. Ce qui veut dire qu’on ne devrait pas la retrouver et c’est bien ce qui se passe. Il vous faut afficher les deux tables et comparer les structures. Toujours pour la même table , vous constatez qu’il y a d’un côté (nouveau site) 30 colonnes et de l’autre 34 (après avoir cliqué sur structure dans phpmyadmin. Quatre colonnes ont disparu. Ce sont les colonnes : title_alias, sectionid, mask et parentid.

Vous allez sélectionner l’onglet sql et vous rentrerez les lignes suivantes :

requête mysql

 

 

 

 

 

 

 

ce qui donne ici en exemple, pour la table des menus (que j’avais renommé ici menu2 parce que j’effectuais des tests) :

suppression de colonnes dans une table de menus joomla3.xx

 

 

 

 

En bref : 

table content : supprimer colonnes title_alias, sectionid, mask, parentid

table menu : supprimer colonne ordering

table categories : histoire de ne pas faire comme les autres, il faut cette fois ajouter une colonne version avec une valeur de champ égale à 1. Pour cela vous utiliserez les commandes sql suivantes :

ALTER TABLE `nom de votre table de catégorie` ADD `version`INT(10)unsigned NOT NULL DEFAULT ‘1’ ;

 

3.2) Le problème des ID identiques

Si vous importez des entrées dans des tables qui contiennent déjà une ou plusieurs clés identiques, voilà ce que vous aurez comme message :
mysql a détecté que la clé primaire "60" existait déjà dans la table assets

 

 

 

 

 

« mysql a répondu : duplicata….. » Une entrée avec la valeur 60 comme clé primaire existe à la fois dans le fichier d’export et la table qui va réceptionner les données.

Que faire ?

Pour commencer, évitez d’installer des données d’exemples sur votre joomla « local ». Des catégories, des menus et des articles vont être créés et vous allez vous retrouver avec des entrées supplémentaires qui auront  une clé primaire pour chacune d’entre elles.

Pour l’exemple des tables assets, si vous comparez celle d’un joomla2.5.28 et du joomla3.3.6 vous remarquerez une structure identique , des colonnes avec des ID semblables et même des correspondances dans le contenu des entrées. Mon erreur venait donc du fait d’avoir copié une entrée existante mais comme elles étaient identiques, il était inutile de la copier. A part ça , je n’ai pas rencontré de problèmes.

Donc, avant d’effectuer vos exportations , comparez les clés primaires afin d’éviter des doublons et par conséquent, des erreurs sql.

N.B. Vous pouvez également faire un peu de ménage en passant par l’administration :

suppression de catégories dans joomla 3.3

 

 

 

4)Insertion des données de l’ancien site vers le nouveau projet

Nous arrivons semble-t’il au bout du tunnel. Il ne vous reste plus qu’à exporter les lignes de votre table « remaniée » , puis les importer dans la table originale. Ensuite utiliser le même système précédemment expliqué pour remettre les tables sous « InnoDB ».

Alors , est-ce que cela fonctionne ?

Euh ! Pas tout à fait…

message d'avertissement

 

 

 

 

 

Eh oui je n’ai pas pensé à la table « utilisateurs »  préfixe de table_ users  car,  comme je suis le créateur des articles, joomla ne me trouve pas puisque je n’ai pas exporté mes coordonnées dans la table du joomla local.

je vous mets également l’image d’une autre erreur causée par l’utilisateur absent :

autre exemple d'erreur causé par l'absence d'un utilisateur dans la bdd

 

 

 

Je pense que maintenant , vous savez comment faire pour intégrer de nouvelles lignes ; cependant, si vous n’en avez qu’une comme dans mon cas, vous pouvez très bien créer vous-même l’entrée en recopiant les données correspondantes dans les champs vides, en utilisant l’onglet Insérer et en vous positionnant (clic) sur la table concernée.

Remarque : la colonne Usertype a disparu dans la version 3.3 ; vous savez ce qui vous reste à faire (elle est notée deprecated dans la 2.5)

 Conclusion :

Tout fonctionne parfaitement si ce n’est quelques effets css3 que j’avais intégrés dans certains articles. Afin de corriger ce problème, j’ai tranféré (filezilla) ma page customcss dans le dossier css du template joomla utilisé. Maintenant, j’ai effectué ces « opérations » avec ma connaissance personnelle, qui n’est pas celle d’un pro des SGBDD. Donc toute remarque afin d’améliorer le système sera la bienvenue et si vous pouvez vous en passer, ce n’est pas moi qui vous en plaindrais. J’avoue que moi-même ne trouve pas ce billet très « comestible » mais si il peut vous aider en quoi que ce soit, là sera ma récompense. Malgré tout, il est toujours utile de voir un peu plus en profondeur comment Joomla fonctionne au niveau de la base de données. Alors, j’ai quand même trouvé cette expérimentation intéressante ; et vous ?

A bientôt

 

 

 

 

En aparté, voici un tutoriel sur  joomla 3 , fourni par le site officiel joomla.org : https://docs.joomla.org/J3.x:Installing_Joomla/fr.

 

A propos de fabonearth

bonjour, je suis consultant spécialisé "web", parce que je suis passionné par la technologie, qui réinvente l'Internet et le webmarketing. C'est beaucoup plus de travail de veille mais je suis mordu depuis ma première connexion. J'ai toutefois une petite préférence pour les réseaux sociaux, joomla, wordpress, prestashop, le référencement , html5, css3 ainsi que la mise en oeuvre de bout en bout d'un site web. C'est déjà beaucoup et je dois être une araignée si je veux me sentir à l'aise dans la "Toile". Avoir des yeux partout, mdr. A bientôt !

3 commentaires

  1. merci beaucoup mon frere

  2. Merci beaucoup pour votre tuto, je suis en train de passer un Joomla 2.5 en V3 et ça m’aide beaucoup !!

Répondre

Votre adresse email ne sera pas publiée. Les champs obligatoires sont marqués d'une étoile *

*

verbeke fabrice consultant web - Page système de gestion de contenus - content management system