Créer un PDF Recommander Imprimer

Mettre à jour votre extension de Joomla! 1.5 à 1.6

(15 votes)
  • Document type
    Tutoriel PHP
  • Niveau
    Débutant
  • Version Joomla
    1.5.x
  • Dernière modification
    28.07.11
  • Version PHP
    5.x
  • Créé par
    Adrien
  • Version MySQL
    4.x, 5.x

compat1516Le sortie de la première version stable de Joomla! 1.6 étant imminente, il est temps de s'attaquer à la mise à jour de vos extensions. Cet article s'adresse en particulier aux développeurs qui veulent supporter Joomla! 1.6 sans créer de package indépendant mais simplement en mettant à jour quelques éléments à partir d'un composant Joomla! 1.5.

 

Différentier son code pour Joomla! 1.5/1.6

Si vous comptez supporter Joomla! 1.5 et 1.6 sur le même package (ce qui est tout à fait possible), il vous sera à plusieurs reprises nécessaire d'éxécuter du code par rapport à la version de Joomla.

Comme dans les versions antérieures, la constante permettant de connaitre la version courante de Joomla est JVERSION.

1
2
3
4
5
if(version_compare(JVERSION,'1.6.0','<')){
//Code pour Joomla! 1.5
}else{
//Code pour Joomla >= 1.6.0
}

Les fichiers de langue

Par simple soucis d'optimisation, des contraintes supplémentaires ont été ajoutées aux fichiers de langue pour qu'ils soient compatibles avec Joomla! 1.6.

Néanmoins, un fichier de langue Joomla! 1.6 sera compatible avec Joomla! 1.5 (pas l'inverse!), il est donc possible de ne garder qu'un seul fichier de langue (celui de 1.6) afin de ne pas alourdir le package.

Les clés des chaînes de caractères ne doivent contenir que des caractères alpha-numériques majuscule (ainsi que le underscore), les espaces ne sont plus supportés.

La traduction de la clé doit être entourée par des guillemets.

Ainsi un fichier de langue compatible Joomla! 1.5 comme celui-ci:

 

1
2
3
4
5
6
CAPTCHA TRY AGAIN=La vérification du code (captcha) a echoué.
CATEGORY DELETED=Catégorie(s) supprimée(s) avec succès.
CATEGORY PUBLISHED=Catégorie(s) publiée(s) avec succès.
CATEGORY SAVED=Catégorie enregistrée
CATEGORY SUBMISSION=Soumission de catégorie
CATEGORY UNPUBLISHED=Categorie(s) depubliée(s) avec succès.

Devra être modifié en:

1
2
3
4
5
6
CAPTCHA_TRY_AGAIN="La vérification du code (captcha) a echoué."
CATEGORY_DELETED="Catégorie(s) supprimée(s) avec succès."
CATEGORY_PUBLISHED="Catégorie(s) publiée(s) avec succès."
CATEGORY_SAVED="Catégorie enregistrée"
CATEGORY_SUBMISSION="Soumission de catégorie"
CATEGORY_UNPUBLISHED="Categorie(s) depubliée(s) avec succès."

Les clés devront bien évidemment être également changées dans votre code.

Les fichiers principaux de traduction n'ont pas changé de localisation et se trouveront toujours dans les répertoires "language" du front-end ou back-end.

Néanmoins, le fichier de traduction du menu composant dans le back-end auparavant appelé "en-GB.com_moncomposant.menu.ini" doit maintenant être renommé en "en-GB.com_moncomposant.sys.ini" et les clés doivent correspondre exactement aux titres de vos menus (dans votre fichier XML).

Par exemple, le fichier en-GB.com_banners.menu.ini :

1
2
3
4
COM_BANNERS=Banner
COM_BANNERS.BANNERS=Banners
COM_BANNERS.CLIENTS=Clients
COM_BANNERS.CATEGORIES=Categories

A été changé en fichier en-GB.com_banners.sys.ini :

1
2
3
4
5
6
7
8
COM_BANNERS="Banners"
COM_BANNERS_BANNERS="Banners"
COM_BANNERS_CATEGORY_ADD_TITLE="Category Manager: Add A New Banners Category"
COM_BANNERS_CATEGORY_EDIT_TITLE="Category Manager: Edit A Banners Category"
COM_BANNERS_CATEGORIES="Categories"
COM_BANNERS_CLIENTS="Clients"
COM_BANNERS_TRACKS="Tracks"
COM_BANNERS_XML_DESCRIPTION="This component manages banners and banner clients"

COM_BANNERS_BANNERS, COM_BANNERS_CATEGORY_ADD_TITLE... étant les titres des menus du fichier XML (qui ont été insérés dans la base de données lors de l'installation).

Pour avoir une extension compatible Joomla 1.5 et 1.6, vous pouvez insérer les deux fichiers "en-GB.com_moncomposant.menu.ini" et "en-GB.com_moncomposant.sys.ini" dans votre package.

Javascript

Certains changement ont été apportés à la gestion du javascript.

Le premier est le passage de Mootools 1.11 à Mootools 1.2.4. Changement que vous avez déjà pu préparer car les dernières versions de Joomla! 1.5 ont déjà la possibilité de tourner sous Mootools 1.2.4 grâce au plugin d'upgrade de Mootools.

Outre Mootools, les fonctions d'envoi des formulaires ont été modifiées et vous ne pourrez plus vous servir de la fonction "submitbutton"(pressbutton) pour exécuter une action lors de l'envoi du formulaire.

L'équivalent pour Joomla! 1.6 est :

1
Joomla.submitbutton = function(task) {...}

Ainsi, un code standard de validation sous Joomla! 1.5 :

1
2
3
4
5
6
function submitbutton(pressbutton) { 
if (pressbutton == 'cancel' || document.formvalidator.isValid(document.adminForm )) {
submitform( pressbutton ); 
}
}

sera maintenant écrit :

1
2
3
4
5
6
Joomla.submitbutton = function(task)
{
if (task == 'user.cancel' || document.formvalidator.isValid(document.id('user-form'))) {
Joomla.submitform(task, document.getElementById('user-form'));
}
}

XML des plugins et modules

La syntaxe des paramètres dans les fichiers XML a changé.

params a été renommé en fields
param a été renommé en field
et on voit apparaitre deux nouveaux éléments:

  • "fieldset" qui va permettre de déterminer la position d'affichage des paramètres.
  • "config" qui va englober tous les paramètres

Un XML valide Joomla 1.5 comme celui ci:

xml15


Devra être modifié pour être compatible Joomla 1.6 en:

xml16

Les deux écritures peuvent être incluses dans le même fichier XML ce qui le rendra compatible Joomla 1.5 et 1.6:

xml15-16

 

ACL

Joomla! 1.6 se dote d'un nouveau système pour gérer les ACL, beaucoup plus puissant et flexible que le précédent.

Vous pouviez récupérer le niveau d'accès de l'utilisateur sous Joomla 1.5 avec:

1
2
$my =& JFactory::getUser();
$group = $my->get('aid');

 

Puis ne charger que les articles autorisés en utilisant:

1
'SELECT ... FROM `#__content` WHERE access <= '.$group

Le chargement des niveaux d'accès sous Joomla 1.6 s'effectue de la sorte:

1
2
$my =& JFactory::getUser();
$groups = $my->authorisedLevels();

 

Et le chargement des articles en fonction du niveau d'accès:

1
'SELECT ... FROM `#__content` WHERE access IN ( '.implode(',', $groups) .')'

 

NB: le contenu de cet article n'est pas exhaustif et d'autres changements devront être effectués sur votre extension en fonction de ses fonctionnalités.

Commentaires  

 
#12 Garstud 01-11-2011 19:04
Citation en provenance du commentaire précédent de dstti :
J'hésite encore à passer sur joomla 1.6.... En vaut-il vraiment la peine ?

En sachant que joomla 1.6 est desormais remplacé par sa version plus mature (v1.7), ... et que la version stable suivante (v2.5) qui arrive en janvier, sera la version definive et stable de la 1.6 et 1.7 ... il est peut-etre le temps de mettre à jour votre extension !

Enfin cela dépend du temps qu'il vous faut pour la mettre a jour, mais sachez que vos utilisateurs vont etre de moins en moins intéressé par votre v1.5 (car joomla 1.5 ne sera plus maintenu a partir d'avril 2012)
Citer
 
 
#11 24-10-2011 22:24
J'hésite encore à passer sur joomla 1.6.... En vaut-il vraiment la peine ?
Citer
 
 
#10 24-06-2011 11:22
treè bon tuto merci
Citer
 
 
#9 24-06-2011 11:21
Merci très bon tuto
Citer
 
 
#8 08-05-2011 02:35
Bonjour
très bonne explication, mais pourriez vous m'expliquer comment créer vos propres composants joomla 1.6 ?
sachant bien que je suis un développeur PHP intermédiaire, utilisateur avancé en joomla mais débutant en développement joomla

Merci
Citer
 
 
#7 29-04-2011 04:12
"Les deux écritures peuvent être incluses dans le même fichier XML ce qui le rendra compatible Joomla 1.5 et 1.6"
Dans ce cas, doit-on mettre ou dans le fichier XML?
Citer
 
 
#6 24-04-2011 10:07
Ça va m'aider, merci beaucoup !
Citer
 
 
#5 21-03-2011 21:17
Merci Adrien, explications très claires et les comparaisons de code J1.5 / J1.6 sont fortement pédagogiques. Beau tutoriel.
Citer
 
 
#4 09-03-2011 09:04
Salut,

Superbe explications.

Si tu pouvais ajouter également ce qui change dans le fichier *.php comme par exemple qu'on n'écris plus :

$params->get mais $this->params->get

ou que "onPrepareConten t" a changé en "onContentPrepar e" dans la façon même d'écrire les fonctions :)

Merci.
Citer
 
 
#3 24-02-2011 15:13
Bonjour,
Je viens d'installer joomla16 et je ne vois aucun tutoriel qui explique comment installer de nouveaux composants... Si vous aviez un lien vers lequel m'orienter.
merci
Citer
 

Ajouter un Commentaire


Code de sécurité
Rafraîchir

Recherche

Télécharger Joomla

telecharger joomla télécharger Joomla 1.5.26 télécharger Joomla 2.5.4 télécharger Joomla Platform 12.1

Connexion

Espace contributeurs