Série : développer une extension Joomla! 3.0 - Episode 2 : commencer le développement

Written by | 31 March 2013 | Published in 2013 April
Dans le cadre de cette série de tutoriel pour le développement d’un composant Joomla! 3.0, et afin de vous proposer un exemple concret, j’ai choisi de vous présenter le processus de création d’une véritable extension. Ce composant sera disponible en consultation et téléchargement sur le site d’accompagnement cité en référence tout au long de cet article. Mon objectif est d’écrire un composant plus complexe que le traditionnel "Hello World", afin d’aborder l’ensemble des éléments clés dans le développement d’un composant.

Etape 0 : préparer votre café !

Une nouvelle fois, il est important de commencer votre journée et votre projet de la meilleure des façons. Etablissez une routine, un rythme et vous constaterez rapidement que votre créativité, votre concentration et vos compétences en codage seront à leur maximum quand vous vous installerez pour commencer votre travail.
Ne négligez pas l’importance d'être dans un bon état d'esprit avant de commencer à travailler.

Etape 1 : définir les fichiers nécessaires à votre composant

La première chose à faire est d’établir un bref aperçu des fichiers, dossiers, tables de bases de données et champs associés. Pour notre composant, nous allons créer les éléments suivants.

Détails du composant

Nom : Lendr
Nom du Composant : com_lendr
Description : Lendr est un composant compatible bootstrap pour Joomla! 3.0 permettant aux utilisateurs de créer un profil, d’ajouter leurs livres à leur collection, de consulter les collections des autres utilisateurs, de demander à emprunter un livre, d’ajouter des livres à une liste d’envie, et de s’inscrire sur une liste d’attente pour un ouvrage en particulier.

Fonctions de base

Ce nouveau composant Lendr devra proposer les fonctionnalités suivantes :

  • Comptes utilisateurs / Profils de base
  • Livres / Bibliothèques pour utilisateurs
  • Listes d’envie pour les livres souhaités
  • Prêt / Emprunt d’un livre
  • Demander à emprunter un livre
  • Listes d’attente pour un livre déjà prêté

A ce stade, il nous faut déterminer la structure de base et l’organisation des fichiers qui nous sont nécessaires. Cette liste n’est pas exhaustive, nous serons très certainement amenés à la modifier au fur et à mesure de l’avancement du projet. Malgré tout, disposer d’un bon aperçu dès le départ vous aidera à garder le cap. Voici la première ébauche des fichiers clés et nécessaires à notre composant Lendr.

Fichiers de base

Contrôleurs/ControllersModèles/ModelsVues/ViewsTables/TablesDivers/Misc.

Sauvegarder/Save
Liste/List
Ajouter/Add
Editer/Edit
Prêter/Lend
Supprimer/Delete
Souhait/Wish
Commentaire/Review
Demande/Request
Par défaut/Default

Livre/Book
Par défaut/Default
Bibliothèque/Library
Profil/Profile
Commentaire/Review
Liste d’attente/Waitlist
Liste des envies/Wishlist

Livre/Book
Liste des envies/Wishlist
Bibliothèque/Library
Profil/Profile
Liste d’attente/Waitlist
Commentaire/Review

Livre/Book
Liste des envies/Wishlist
Bibliothèque/Library
Liste d’attente/Waitlist
Commentaire/Review

Install
Router
XML

Maintenant que nos fichiers sont listés, que notre ébauche est prête, il nous faut commencer à organiser ces fichiers dans nos dossiers.

Etape 2 : créer les fichiers tables de la base de données

Nous commençons par l'écriture des fichiers de table pour la base de données. Nous les stockons dans le dossier table, situé dans la partie site de notre composant. Je vous invite à relire le premier article de cette série pour vous remémorer la configuration d'un environnement local. Nous allons créer chacun des fichiers que nous avons ébauchés précédemment.

Voici un de ces fichiers :

/joomla_root/administrator/components/com_lendr/admin/install.mysql.sql [Cliquer pour voir le code]

Dans notre cas, notre fichier table ne contient qu’une seule fonction constructor. Elle permet de déterminer le nom de la table associé au fichier JTable et de définir le champ de la clé primaire : book_id.

Lors de la création de nos tables de bases de données, il est également opportun de commencer le processus de création du script install.mysql.sql, qui sera utilisé lors de l'installation de notre composant via la console d'administration Joomla!. Voici les premières lignes de ce fichier :

/joomla_root/administrator/components/com_lendr/admin/install.mysql.sql [Cliquer pour voir le code]

Nous complèterons ce fichier tout au long de la création de nos tables. L'ajout de ces tables dès leur création nous facilitera la tâche lors de la compilation du composant pour son installation.

Etape 3 : commencer la création des dossiers et fichiers du composant

Après avoir créé les tables de la base de données, organisons la structure du composant.
Voici la structure de base du répertoire :

com_lendr/
    admin/
      controllers/
      models/
      views/
      index.html
      install.mysql.sql
      lendr.php
   site/
      assets/
      controllers/
      helpers/
      language/
      models/
      tables/
      views/
      index.html
      lendr.php
      router.php
install.php
lendr.xml

Chacun de ces fichiers et dossiers est important, même si tous ne sont pas obligatoires. Nous allons commencer à travailler dans chacun de ces fichiers sur les fonctions qu'ils contiennent. Je vous expliquerai au fur et à mesure le rôle de chacun.

Etape 4 : rédiger les fichiers d'installation, le fichier racine, les contrôleurs et les contrôleurs de vue

Dans cette étape, nous allons ajouter du contenu à plusieurs fichiers. Pour débuter, nous allons travailler sur les fichiers d'installation, puis sur certains contrôleurs et nous terminerons par l'ajout de nos contrôleurs de vue.

Les fichiers d'installation

Les fichiers racines sont ceux utilisés par Joomla! lors du processus d'installation. Ils sont placés en dehors des dossiers site et admin de votre composant :
- Le fichier XML sert à définir les détails du composant, ainsi que les fichiers associés, menus et langues.
- Le fichier install.php contient des fonctions qui s'exécutent lors de l'installation. Son nom peut varier mais en tout état de cause, ce nom devra être correctement défini dans le fichier XML. Les fonctions n'ont pas à être utilisées ou même présentes mais peuvent être utiles pour effectuer des actions supplémentaires lors de l'installation du composant.

Fichiers d'exemple
lendr.xml [Cliquer pour voir le code]
install.php [Cliquer pour voir le code]

Le fichier racine - lendr.php

Le fichier lendr.php, placé à la racine du dossier site, est le premier fichier reconnu et lu par Joomla! après l'installation. Ce fichier gère la redirection des tâches vers d'autres contrôleurs, le chargement des fichiers helper, des feuilles de styles, des javascripts, des bibliothèques de plugin et d'autres éléments du noyau qui sont nécessaires au bon fonctionnement du composant. Tout ceci sera expliqué plus en détail dans un prochain article.

Ce fichier permet de charger les tables associées au composant, d'importer tout plugin présent dans le groupe de plugin "Lendr", de déterminer le contrôleur demandé par l'utilisateur puis d'exécuter la commande appropriée en fonction de cette requête.

Les contrôleurs

Dans un composant Joomla! 3, les contrôleurs sont créés en tant que classe, avec une fonction unique. Généralement, le nom du contrôleur indique la tâche qu'il doit accomplir. C'est un grand changement par rapport aux précédentes versions de Joomla! où un contrôleur exécutait toute une variété de tâches liées à un domaine particulier du composant. La création de contrôleurs à fonction unique offre l'opportunité de lier les contrôleurs et de simplifier la recherche d'une action en particulier ou d'une erreur. Vous trouverez ci-dessous un des contrôleurs du composant Lendr, ainsi que le contrôleur par défaut contenant des fonctionnalités de base.

Exemple
edit.php [Cliquer pour voir le code]
default.php [Cliquer pour voir le code]

Les contrôleurs de vue

Avec Joomla! les vues sont générées de façon quelque peu originale. Joomla! utilise un contrôleur secondaire pour aider au rendu des données et à l'attribution des variables à utiliser dans les affichages de vues. Ce contrôleur secondaire se trouve dans le dossier views du composant et son intitulé permet généralement d'avoir une idée du type de rendu désiré (par exemple, html.php pour un rendu html, phtml.php pour le rendu d'une partie d’un template, raw.php pour le rendu des données brutes, ect.) Ci-dessous un des contrôleurs de vue utilisés pour Lendr.

Exemple
html.php [Cliquer pour voir le code]
raw.php [Cliquer pour voir le code]

Etape 5 : créer les Modèles

Les modèles dans Joomla! fonctionnent de la même façon que ceux de la plupart des systèmes MVC et permettent la manipulation et la récupération des données. Nous aborderons plus en détail les modèles pour Lendr dans notre prochain tutoriel. Concentrons nous pour l'instant sur la structure générale.

Exemple
book.php [Cliquer pour voir le code]
default.php [Cliquer pour voir le code]

Ce ne sont que deux exemples des fichiers pour modèles qui seront créés pour le composant Lendr. Les autres fichiers modèles sont de même nature et structure. Nous les écrirons et expliquerons plus en détail dans le prochain tutoriel.

Synthèse de la partie : commencez le développement

A ce stade, nous avons créé la structure de base de notre composant, rédigé les tables de la base de données, les fichiers d'installation, les contrôleurs, les contrôleurs de vue, ainsi que les modèles pour que notre composant puisse être installé. Bien sûr, nous n'avons pas encore créé les fonctionnalités et notre composant est un peu comme une "coquille vide", mais quel plaisir d'avoir un composant installable.
Pensez à consulter notre dépôt Github pour récupérer les autres tables de base de données, contrôleurs, contrôleurs de vue, et modèles que nous n'avons pas rédigés et simplement survolés dans le cadre de ce tutoriel.

Je vous invite à consulter le tutoriel complet avec les parties de code réutilisables à l'adresse http://lendr.sparkbuilt.com.

Dans le prochain tutoriel nous allons nous concentrer sur l’écriture des fonctionnalités à intégrer aux différents modèles.

Ressources

lendr.sparkbuilt.com

Dans la série :

Read 34679 times Tagged under French