Série : développer une extension Joomla! 3.0 - Episode 1 : préparer le terrain

Written by | 30 March 2013 | Published in 2013 April
Cela fait quelque temps déjà que je m’interroge sur l'utilité de ce premier article dans le cadre d’une série portant sur le développement d’une extension, et j’ai finalement décidé que ce billet était en fait digne d'intérêt. Il est en effet important de s'assurer que vous disposer de fondations saines, puisque dans le cadre de la création d’un composant pour Joomla! 3.0, de nombreux aspects doivent être pris en compte et planifiés dès le premier jour.  Ceci est le premier d’une série d'articles portant sur le développement d'extension ; série qui serait incomplète si l'on ne prenait pas le temps de discuter des étapes initiales et nécessaires de planification et de structuration d’une extension. Je vous propose ainsi les différentes étapes suivantes pour vous permettre d'être plus efficace et d’assurer la réussite de vos débuts dans la réalisation d’une extension pour Joomla!.

Etape 0 : préparez-vous un bon café

(Certes, je rédige ce paragraphe non sans ironie, mais il existe une raison de qualifier cette étape de "semi-importante".) Avant de commencer à travailler, il est important de prévoir une tasse de votre boisson préférée, qui vous permettra de rester alerte et concentré. En établissant une certaine routine vous habituerez votre corps et votre esprit à se mettre en parfaite condition pour accomplir le travail à venir.
Lorsque vous commencez l’écriture d’un code, il est important d’être alerte, bien éveillé, et que vous pensiez non seulement à la prochaine ligne de code à écrire, mais également de toujours garder à l’esprit une vision globale de votre projet.
Ca y est, votre tasse est prête ? Alors il est temps de commencer.

Étape 1: commencez avec un simple bloc-notes et le stylo de votre choix

La quasi-totalité de nos projets ont pris corps sur un simple bloc-notes. Vous pourrez préférer un autre type de support papier, faites selon vos propres préférences. Pour ma part, je vous recommanderais un traditionnel bloc-notes pour différentes raisons mais ce n'est absolument pas une obligation.
Je vous recommande également l’usage d’un stylo plutôt que d’un simple crayon à papier. Les crayons à papier ont tendance à baver, les idées se perdent, les lignes se brouillent. L’objectif n’est pas ici de rédiger un plan parfait, mais bien de réfléchir, de griffonner et tout simplement de poser des idées sur le papier. Le résultat n’est souvent pas très esthétique. L’utilisation d’un stylo vous invite à réfléchir, alors qu’avec un crayon à papier vous pouvez effacer, réécrire et vous "prendre la tête".

Étape 2: déterminez vos besoins, le marché cible, et le problème à résoudre

Très bien, vous devriez maintenant être confortablement installé avec votre boisson chaude, un bloc-notes et un stylo : paré pour l’étape suivante !
Commencez à coucher vos idées sur papier.
Débutez par le problème que vous souhaitez résoudre : pourquoi écrivez-vous cette extension ? Quelles sont les idées principales sur lesquelles vous concentrer ? Que devra faire votre extension ?
A ce stade, quelques recherches s’imposent. Est-ce qu’un tel composant existe déjà ? Quelqu'un a-t-il déjà proposé un produit similaire pouvant concurrencer le vôtre ? Quelle est la taille du marché cible pour votre composant ?
J’attire particulièrement votre attention sur ces éléments car certaines précautions sont à prendre en considération.

Premièrement, n’essayez pas d’écrire un unique composant capable de tout faire. Soyez clair et précis sur la fonctionnalité que vous souhaitez développer et le problème que vous souhaitez résoudre. Ensuite concentrez-vous, concentrez-vous, et concentrez-vous ! Votre vie en sera nettement simplifiée et votre marketing s’en trouvera facilité.
Deuxièmement, assurez-vous que votre marché cible existe bel et bien. Ce n’est pas parce que vous avez besoin de ce composant que d’autres en ont forcément besoin.
Soyez réaliste quant à vos attentes et vous gagnerez ainsi en confiance au fur et à mesure de votre progression.

Étape 3 : rédigez le déroulé de votre application/extension

Une fois que vous avez griffonné vos idées, déterminé votre marché cible, ainsi que les problèmes que vous souhaitez résoudre, l'étape suivante consiste à décrire le déroulé global de votre composant.
Il y a de forte chance que cette opération se réalise simultanément avec l'étape précédente et, en couchant vos idées sur le papier, vous vous surprendrez à entamer ce processus.
Déterminez les Contrôleurs, Modèles et Vues dont vous aurez besoin. C'est probablement le bon moment de faire un aparté pour aborder la première partie importante du développement d’un composant pour Joomla! 3.0 : l’architecture Modèle-Vue-Contrôleur (MVC pour Model-View-Controller) et Joomla!.

Joomla! implémente une structure MVC relativement classique, mais qui diffère légèrement des structures cadricielles MVC utilisées par d'autres plateformes. Joomla! 3.0 perçoit chaque tâche en tant que contrôleur. Cela signifie que vous aurez très certainement besoin des contrôleurs "sauver", "ajouter", "éditer", "supprimer", etc. Chaque contrôleur réalise une tâche et une seule. Au début, vous trouverez probablement que vous aurez un trop grand nombre de fichiers, mais en fin de compte cela permet un déroulement intuitif au niveau du composant ainsi que l'enchaînement simultané de plusieurs commandes (j’aborderai plus tard et plus en détail ce sujet, lorsque nous commencerons à écrire les fichiers Contrôleurs).

Les Modèles dans Joomla! traitent de la gestion des données. C'est ici que vous aurez besoin de toute la logique de votre code. Les modèles sont généralement créés pour représenter les clés unitaires ou les objets de votre composant (par exemple : catégorie, article, etc.). Dans les modèles, vous aurez un certain nombre de fonctions relatives à un objet en particulier (par exemple : lister, obtenir, sauver, etc.).

Pour finir, vous avez vos fichiers Vues. Joomla! intègre une méthodologie standard quant à la génération de ces Vues mais encore une fois, nous reviendrons plus en détail sur ce sujet ultérieurement dans notre série. Ce qu'il suffit de préciser à ce stade est que les vues suivent une structure similaire aux modèles avec différentes vues en relation avec chaque clé unitaire, ou objet de votre composant.

Tout ceci devrait vous donner un bref aperçu (bien que peut-être un peu simpliste) de la structure MVC de Joomla! et que j'espère suffisant pour vous donner une idée sur la façon d’organiser le déroulement dans l’écrire de votre composant et ainsi, pouvoir passer à l'étape suivante.

Étape 4 : organisez les structures de données et le schéma de tables

Bien qu'il existe, dans le cadre de la création d’une extension, différentes approches possibles concernant la première étape, la prochaine se devra d'être la plus logique et la plus intuitive possible.
Une fois les informations ci-dessus couchées sur papier, avec les éléments clés et le déroulé global de notre composant déterminés, l’étape suivante consiste en l’organisation de nos structures de données et la création de schéma de tables.

Au cours de cette étape, nous commençons par décomposer chacun des modèles (ou zones clés) déterminés précédemment, et écrivons chacun des champs que nous comptons utiliser dans ce modèle ou table. La plupart des composants nécessite que chaque modèle soit associé à une table afin d’y stocker les données correspondantes. Il existe différents champs que nous pouvons qualifier de champs de table standards et qui sont utilisés dans le cadre de l'écriture d'un composant Joomla!. Nous les présenterons ultérieurement dans cette série lorsque nous avancerons dans notre code. Lors de l’écriture de nos structures de tables, nous nous devons de suivre certaines conventions standardisées. Par exemple, si nous avons l'intention d'associer un élément à une catégorie en particulier nous allons intégrer une "category_id" à la table de notre élément. De même, nous allons intégrer un "user_id" si nous souhaitons associer des éléments à un utilisateur. Cela nous sera très utile lorsque nous commencerons l’importation de nos tables "faites main" dans notre constructeur SQL. Parfois, il sera même utile de tracer des lignes entre nos différentes tables afin d’avoir un meilleur aperçu de la façon dont tout est lié.

Étape 5 : configurez un système pour le suivi de versions (GitHub)

Il n’est pas indispensable de réaliser cette opération en cet instant précis, mais finalement, il n’y a pas de règle, et c’est peut être le bon moment pour mettre en place un suivi de nos futures versions.
Nous vous recommandons GitHub pour différentes raisons. Si vous n'êtes pas un familier de GitHub, sachez que vous pouvez opter pour un espace de dépôt grand public (gratuit) et un dépôt privatif (le tarif mensuel est minime). Vous pouvez ainsi suivre l’ensemble de vos modifications de code tout en conservant une sauvegarde sécurisée et hors site de tout votre travail. Autre point positif : d’autres utilisateurs peuvent contribuer au code sans risquer d’écraser le code des autres utilisateurs. Bien entendu, il est tout à fait possible de s’orienter vers une autre solution que GitHub, ce n’est certainement pas la seule solution existante, mais il reste essentiel que vous trouviez un système vous permettant de sauvegarder, suivre et de sécuriser votre code.

Étape 6 : configurez votre environnement local

La dernière étape de ce premier article réside dans la configuration d’un environnement de développement en local. Je précise en cet instant qu’il existe de nombreuses solutions mais plutôt que de disserter sur les différents outils à votre disposition pour l’écriture de votre code, je vous dirais simplement que le moment est venu de mettre en place votre environnement local de développement.
Nous allons installer un Joomla! 3 en local, en faire un clone sur notre dépôt GitHub et, en fonction des besoins, lier nos répertoires. Personnellement, pour administrer mon code, j'utilise Sublime Text 2 et je trouve que les outils Git intégrés sont tout à fait satisfaisant pour l’essentiel de mon codage. Il existe différents logiciels que vous pouvez utiliser, mais plutôt que de les dénigrer, je vous encourage à trouver celui qui correspond le mieux à votre méthodologie de travail ainsi qu’à votre style de codage.


Le mois prochain : Débuter le développement

Dans la série :

Read 17381 times Tagged under French
Sandra Thevenet

Sandra Thevenet

Of course, I am passionate about the web, and even more about Joomla! and especially its fabulous Community of people with whom it is so easy to share.
Some call me the CSS fanatic and I must confess, it is truly a passion for me.
From my little island, I try to contribute and participate to the Joomla! project.

----

Vous êtres francophone et vous souhaitez écrire ou traduire un article sur notre CMS préféré ? Contactez-moi par mail : sandra.thevenet@community.joomla.org