Project

General

Profile

Actions

Systeme de Plugins » History » Revision 7

« Previous | Revision 7/14 (diff) | Next »
Simon, 05/04/2012 04:38 PM


Système de Plugins

Téléchargement d'un plugin

Pour télécharger un plugin, utilisez svn. Par exemple :

svn co http://dev.linea21.com/svn/linea21-plugins/trunk/l21_gotoTop/

Installation d'un plugin

Pré-requis : Avant d'installer un plugin, vous devez vous assurer que le MOD_PLUGIN est bien actif. Pour cela, depuis l'interface d'administration, allez sur Configurer > Système. Déplier l'onglet Configuration système (define_release). Passez en mode édition et changez la valeur de MOD_PLUGIN à 1. Enregistrez les modifications.
Dès lors que le MOD_PLUGIN est activé, le sous-menu Plugins apparaît dans l'onglet Configurer.

  1. Placez le plugin téléchargé (par exemple l21_gotoTop) dans le dossier /plugins/ de l'application
  2. Donner les permissions nécessaires à l'utilisateur apache sur le dossier. Cette étape est nécessaire car l'application doit pouvoir écrire dans le répertoire. Par exemple : * chown www-data:www-data /plugins/l21_monplugin/ * chmod -R 0755 /plugins/l21_monplugin/
  3. Vous pouvez à présent vous rendre sur la page des plugins en cliquant sur Configurer > Plugins. Le plugin nouvellement installé doit apparaître. Vous devez à présent l'activer en cliquant sur le lien adéquat. Votre plugin est installé!

Architecture d'un plugin

L'architecture d'un plugin doit se conformer à quelques règles.

  1. D'abord en ce qui concerne le nommage, le plugin doit nécessairement être préfixé de l21_
  2. Il doit contenir un fichier plugin.xml qui renseignera les méta-informations (nom, auteur, compatibilité, date de sortie, portée du plugin ...)
  3. Il doit nécessairement disposé d'un fichier nommé __init__.php. Ce fichier sera exécuté à chaque appel de page. C'est lui qui instancie le plugin et permettra donc son exécution.
  4. Si le plugin fait appel à des fichiers de langue, il doit impérativement reproduire la structure applicative. Il contient alors un répertoire nommé languages et autant de sous-répertoires pour les langues (par exemple fr et en). Tous les fishiers contenus dans les sous-répertoires seront chargés lors de l'instanciation du plugin.
  5. La présence d'un fichier __install__.php permettra lors de l'installation du plugin d'effectuer des actions relative à sa mise en oeuvre, par exemple, l'ajout d'une table dans la base de données, la modification d'un fichier, ...

Pour le reste, vous avez une totale liberté dans l'organisation de votre plugin. Veillez toutefois à proposer une structure claire, afin que celui-ci puisse être amélioré ou repris par un autre utilisateur.

L'objet plugin

Chaque plugin est instancié par la classe plugin. Les propriétés de l'objet sont ainsi rendues disponibles via la variable globale $plug.

Par exemple :

echo $plug->getVar('name');
echo $plug->getVar('shortname');

// renverra le nom du plugin
// puis le nom du plugin privé du préfixe l21_

Référez-vous à la classe pour connaître les attributs de l'objet et les méthodes qui y sont liées.

Exemple de fichier plugin.xml

<?xml version="1.0" encoding="UTF-8"?>
<plugin>
    <pluginname>l21_gotoTop</pluginname>
    <description>Add a go to Top button on each pages</description>
    <version>1</version>
    <date>22-01-2012</date>
    <compatibility>1.5 +</compatibility>
    <author>Simon Georget</author>
    <homepage>http://www.empreinte-urbaine.eu</homepage>
    <default_language>fr</default_language>
        <image>plugin.png</image>
    <apps>
        <app>public</app>
        <app>admin</app>
    </apps>
</plugin>

La balise <apps> définit la portée du plugin. Elle peut comporter un ou plusieurs tags, selon que le plugin est utile à l'interface publique, à l'interface d'administration ou au deux -comme dans l'exemple ci-dessus.

Exemple de l'architecture d'un plugin

La capture d'écran ci-dessous décrit l'architecture du plugin l21_gotoTop affichant une flèche permettant à l'utilisateur de revenir en haut de page à tout moment.

Pour accéder au code source du plugin, suivez le lien.

Updated by Simon almost 12 years ago · 7 revisions