Outils pour utilisateurs

Outils du site


Panneau latéral

gcweb:documentation:creer_un_plugin

Créer un plugin

GCweb à été prévu pour que ses fonctionnalité puisse être étendue à l'aide de plugins.

Ces plugins doivent être placer dans le répertoires “plugins”. Les fichiers commençant par un prefix “render”, “item”, “bdd”, “aftercache” et “config” s'installeront automatique1). En fonction du prefix les fichier seront inclus (via un include) à différent endroit dans le code de GCstar.

Préfix "render"

render_<nom_plugin>.php

  • Après : avoir initialisé la collection et récupéré les arguments $_GET dans l'url.
  • Avant : le chargement de l'xml de GCstar
  • Pour : par exemple chargé la config et définir les fonctions de votre plugin, modifier des paramètres de configuration de GCweb et des informations sur la collections.

Exemples :

A partir de GCweb svn#220 / v1.1 ces plugins peuvent/pourront ajouter des balises dans l'entêre de la page (entre <head> et </head>). Pour cella complétez le tableau $info['array_add_header'].

Exemples :

$info['array_add_header'][] = '<link rel="stylesheet" href="plugins/mon_plugin/style.css" type="text/css" media="screen" />';

Préfix "item"

item_<nom_plugin>.php

  • Après : chaque chargement d'un élément du fichier de sauvegarde
  • Avant : la mise en cache (les modifications faites par ce plugin sont donc mise en cache).
  • Pour : ajouter/modifier/supprimer un ou plusieurs champs d'un élément.

Exemples :

  • item_BBcode.php applique le parser BBcode à chaque champs de chaque élément.
  • item_str2list4film.php2) transforme les champs actors/contry/director de type string (sous GCstar 1.3, les éléments était simplement séparer par des virgules) en tableau).

A partir de GCweb svn#220 / v1.1 ces plugins peuvent/pourront ajouter du code html dans l'ensemble des pages (en complétant le tableau $item['array_add_to_all_pages']) ou uniquement sur la page de détail (en complétant le tableau $item['array_add_to_page_detail']).

Exemples :

$item['array_add_to_all_pages'][] = 'Un text à afficher sur <strong>toutes les pages</strong>';
$item['array_add_to_page_detail'][] = 'Un text à afficher sur <strong>la page de détail</strong>';

Préfix "bdd"

bdd_<nom_plugin>.php

  • Après : le chargement complet du fichier de sauvegarde GCstar
  • Avant : la mise en cache (les modifications faites par ce plugin sont donc mise en cache).
  • Pour : ajouter/modifier/supprimer un ou plusieurs éléments après chargement complets.

Préfix "aftercache"

aftercache_<nom_plugin>.php

  • Après : le chargement complet du fichier de sauvegarde GCstar et se mise en cache.
  • Avant : la récupération des X éléments pour la page qui va être afficher et la comptage de page.
  • Pour : ajouter/modifier/supprimer un ou plusieurs éléments sans que le résultat ne soit mis en cache.

Préfix "config"

config_<nom_plugin>.php

S'inclue dans la page de configuration de GCweb pour permettre la configuration du plugin.

  • Écriture de la configuration Le plugin devra gérer lui même en vérifiant à préalable que la variable $checkUserPasswd == True. Les entrés utilisateur peuvent être vérifiée avec checktype($_POST['<champs>'],'<type>').
  • Affichage de la page : Le nom des champs de formulaire ne doivent pas entré en conflit avec ceux déjà présent dans la page de config (utiliser des nom de champs de type <nom_plugin>_<champs>. Les fonctions d'écriture de champs de formulaire (ex : input_type_texte('nom_champs','label champs','valeur_par_défaut') peuvent être utilisé.

Principe de ces pages :

<?php
if ($checkUserPasswd) {
     //Ecriture du fichier de config
     $fp = fopen(PATH_GCWEB.'/conf/plugin_machin.php','w');
     fwrite($fp, "<?php
           $config_plugin_machin = array (
                'option1' => ".checktype($_POST['machin_option1'],'string').",
                'option2' => ".checktype($_POST['machin_option2'],'boolean')."
           );\n?>
      ");
     fclose($fp);
}
 
include PATH_GCWEB.'/conf/plugin_machin.php';
 
echo '
     <fieldset><legend>Plugin machin</legend>
          '.input_type_texte('machin_option1','Première option',$config_plugin_machin['option1']).'
          '.input_checkbox('machin_option2','Activé l\'option 2',$config_plugin_machin['option2']).'
     </fieldset>';
?>
1)
lors de l'enregistrement de la page des configuration
2)
inclue dans GCweb
gcweb/documentation/creer_un_plugin.txt · Dernière modification: 15/01/2010 12:34 (modification externe)