Créer un module simple sous Joomla 3.x

Un module Joomla, de la même manière qu’un composant ou un plugin, permet l’extension des fonctionnalités de base de Joomla. En particulier, les modules sont des extensions légères et flexibles. Ils sont généralement utiles pour subdiviser les pages en des blocs indépendants qui implémentent des tâches moins complexes et peuvent être visibles à travers les différents composants.
Accueil > Blog > Development > Créer un module simple sous Joomla 3.x

1.    Introduction

Dans ce tutorial, nous allons parler de la notion de module sous Joomla 3.x qui est le moyen le plus facile d’implémenter un comportement (ou fonctionnalité) quelconque et de le greffer à une position donnée sur n’importe quelle page.

Ce tutoriel va expliquer comment faire pour créer un module simple Hello World. Il va aussi nous apprendre la structure de fichiers de base d’un module. Cette structure de base peut ensuite être étendue pour produire des modules plus élaborés.

Nous avons aussi quelques exemples considérés ici comme les modules standards de Joomla à savoir « menus, Lastest News, Login form, etc … »

Chaque module a un point d’entrée dans le répertoire des modules et de la forme suivante :

mod_modulename/modulename.php

2.    Structure du module

Nous n’allons pas parler de l’installation de Joomla 3.x qui constitue les prérequis utiles pour la compréhension de ce tutorial.

Pour démarrer ce tutoriel, nous aurons besoin d’une version de Joomla 3.x (avec PHP, Mysql, Apache).

Notre module devant s’appeler « Hello Word », le nom du repertoire qui doit contenir les fichiers du module sera écrit « mod_helloworld » de manière standard.

Il existe quatre fichiers de base qui sont utilisées dans le modèle standard de développement du module :

  • mod_helloworld.php - Ce fichier est le point d’entrée principal du module. Il effectuera toutes les tâches d’initialisation nécessaires, appellera des routines d’assistance pour collecter toutes les données nécessaires, et inclure le modèle qui permet d’afficher la sortie du module.
  • mod_helloworld.xml - Ce fichier contient toutes les informations sur le module. Il définit les fichiers qui doivent être installés par l’installateur de Joomla et indique les paramètres de configuration pour le module.
  • helper.php - Ce fichier contient la classe d’assistance (Helper Class) qui est utilisé pour extraire les informations à afficher dans le module (généralement à partir de la base de données ou d’une autre source).
  • tmpl/default.php - Il s’agit du fichier modèle (template) du module. Ce fichier aura les données recueillies par mod_helloworld.php et va générer le code HTML à afficher sur la page.

3.    Création de mod_helloworld.php

Le fichier mod_helloworld.php a trois tâches à réaliser :

  • Inclure le fichier helper.php qui contient la classe à utiliser pour collecter toutes les données nécessaires.
  • invoquer la méthode appropriée de la classe Helper pour récupérer les données.
  • inclure le template pour afficher la sortie.

La classe Helper est définie dans notre fichier helper.php. Ce fichier est inclus avec une instruction require_once :

require_once( dirname(__FILE__).'/helper.php' );

Notre classe Helper n’a pas encore été définie, mais lorsque ce sera fait, il contiendra la méthode : getHello(). Mais pour notre exemple, il n’est pas vraiment nécessaire de de l’utiliser. Nous pouvons afficher le message “Hello, World” simplement en l’incluant dans le template. Nous montrons juste ici comment faire cela à travers la classe Helper.

Notre module actuellement n’utilise pas tous les paramètres, mais nous allons les passer à la méthode appropriée de la classe Helper de façon qu’ils puissent être utilisés plus tard si nous décidons d’étendre les fonctionnalités de notre module.

La méthode appropriée de la classe Helper est invoquée de la manière suivante :

$hello = modHelloWorldHelper::getHello( $params );

4.    Finalisation du fichier mod_helloword.php

La version complète du fichier mod_helloworld.php est la suivante:

<?php
/**
 * Hello World! Module Entry Point
 *
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @link http://dev.joomla.org/component/option,com_jd-wiki/Itemid,31/id,tutorials:modules/
 * @license        GNU/GPL, see LICENSE.php
 * mod_helloworld is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */
 
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
// Include the syndicate functions only once
require_once( dirname(__FILE__).'/helper.php' );
 
$hello = modHelloWorldHelper::getHello( $params );
require( JModuleHelper::getLayoutPath( 'mod_helloworld' ) );
?>

L’instruction ci-dessous permet d’assurer que le module d’inclus dans la structure globale de Joomla, dans le but d’éviter l’injection variable et d’autres problème de sécurité potentiels.

defined( '_JEXEC' ) or die( 'Restricted access' );

Vous pouvez également vous limiter à l’ajout d’une feuille de styles CSS et multiplier ainsi les changements purement visuels tout en conservant la structure HTML du thème parent. Cette technique est monnaie-courante pour les thèmes premium. Cela permet aux designers d’offrir plusieurs apparences pour un même thème.

5.    Création du fichier Helper.php

Le fichier helper.php ne contient que la classe Helper qui est utilisée pour récupérer les données à afficher par la sortie du module. Comme indiqué précédemment, notre classe Helper aura une méthode : getHello(). Cette méthode renvoie le message «Hello World».

Voici le code complet du fichier helper.php :

<?php
/**
 * Helper class for Hello World! module
 *
 * @package    Joomla.Tutorials
 * @subpackage Modules
 * @link http://dev.joomla.org/component/option,com_jd-wiki/Itemid,31/id,tutorials:modules/
 * @license        GNU/GPL, see LICENSE.php
 * mod_helloworld is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 */
class modHelloWorldHelper
{
    /**
     * Retrieves the hello message
     *
     * @param array $params An object containing the module parameters
     * @access public
     */   
    public static function getHello( $params )
    {
        return 'Hello, World!';
    }
}
?>

Il n’y a aucune règle stipulant que nous devons nommer notre classe Helper tel que nous l’avons fait en ce moment. Cependant, il est utile de le faire ainsi, afin qu’il soit facilement identifiable et localisable. De plus, il est nécessaire d’être dans ce format si vous prévoyez d’utiliser le plugin com_ajax.

Plusieurs modules avancés pourraient inclure des demandes de base de données ou d’autres fonctionnalités dans une méthode de la classe Helper.

6.    Création du fichier tmpl/default.php

Le fichier default.php est le template qui affiche la sortie du module.

Voici le code complet du fichier default.php :

<?php  // no direct access
  defined( '_JEXEC' ) or die( 'Restricted access' ); ?>
<?php echo $hello; ?>

Un point important à noter est que le fichier default.php (template) a la même portée que le fichier mod_helloworld.php. Qu’est-ce que cela signifie, c’est que la variable $hello peut être définie dans le fichier mod_helloworld.php et ensuite utilisé dans le fichier template sans déclarations supplémentaires ou des appels de fonction.

7.    Création du fichier mod_helloworld.xml

Le fichier mod_helloworld.xml est utilisé pour décrire les informations à utiliser par le gestionnaire de modules et l’installateur des modules de Joomla. Parmi ces informations, on peut citer les fichiers qui seront copiés et utilisés par ces derniers (gestionnaire et installateur). A partir des fichiers copiés et utilisés, ils détermineront les paramètres de configuration du module. D’autres informations sur le module sont aussi précisées dans ce fichier mod_helloworld.xml.

Voici le code complet du fichier mod_helloworld.xml :

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="3.1.0" client="site" method="upgrade">
    <name>Hello, World!</name>
    <author>John Doe</author>
    <version>1.0.0</version>
    <description>A simple Hello, World! module.</description>
    <files>
        <filename>mod_helloworld.xml</filename>
        <filename module="mod_helloworld">mod_helloworld.php</filename>
        <filename>index.html</filename>
        <filename>helper.php</filename>
        <filename>tmpl/default.php</filename>
        <filename>tmpl/index.html</filename>
    </files>
    <config>
    </config>
</extension>

Vous remarquerez qu’il y a deux fichiers supplémentaires dont nous n’avons pas encore parlé : index.html et tmpl/index.html. Ces fichiers sont inclus afin que ces répertoires ne puissent pas être consultés. Si un utilisateur tente de pointer leur navigateur sur ces dossiers, le fichier index.html sera affiché. Ces fichiers peuvent être laissés vides ou peuvent contenir la ligne simple :

<html><body bgcolor="#FFFFFF"></body></html>

8.   Références

Référence i :http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module

9.    Conclusion

Pour résumer, le développement de modules pour Joomla est un processus assez simple et directe. En utilisant les techniques décrites dans ce tutoriel, une variété infinie de modules peut être développée avec peu de tracas.

Créer un module simple sous Joomla 3.x par Cet article a 7460 Commentaire(s) 1.    Introduction Dans ce tutorial, nous allons parler de la notion de module sous Joomla 3.x qui est le moyen le plus facile d’implémenter un comportement (ou fonctionnalité) quelconque et de le greffer à une position donnée sur n’importe quelle page. Ce tutoriel va expliquer comment f

7,460 commentaires

Donnez votre avis !

Combien font plus ?