Fiche


Niveau de difficulté : Avoir de très bonnes bases.
Recommandations : Aide à la création de plugins.
A lire aussi : [Exemple] Faire son plugin personnel


[Exemple] Ajouter une section à la galerie

But

Le but recherché ici est d'ajouter un section ('categories' est une section par exemple) à la partie publique de la galerie. C'est le premier pas dans la création d'un plugin ajoutant des pages publiques à la galerie.

J'omets sur cette page quelques éléments nécessaire au fonctionnement du plugin, comme les infos dans le fichier main.inc.php où l'anti-hack sur toutes les pages (voir Aide à la création de plugins).

Détecter le paramètre de l'URL (main.inc.php)

Avant de commencer vous devez choisir le nom de votre section, par exemple ma_section

Ce nom fera partie d'une URL, les espaces et les caractères spéciaux sont à proscrire, tout autant que les majuscules.

Le triger correspondant à l'analyse de l'URL est loc_end_section_init.

add_event_handler('loc_end_section_init', 'monplugin_section_init');

Ensuite chaque morceau de l'URL est contenu dans le tableau $tokens

function monplugin_section_init(){
    global $tokens, $page;
    if($tokens[0] == 'ma_section'){
	$page['section'] = 'ma_section';
	$page['title'] = 'Ma super nouvelle section';
    }
}

Si on veut pouvoir avoir des sous-sections il faut récupérer le second token.

function monplugin_section_init(){
    global $tokens, $page;
    if($tokens[0] == 'ma_section'){
	$page['section'] = 'ma_section';
	$page['title'] = 'Ma super nouvelle section';
        if(isset($tokens[1]) AND $tokens[1]){
	    $page['sub_section'] = $tokens[1];
        }
    }
}

Remplacer l'index (main.inc.php)

Ce coup-ci le triger est loc_end_index

add_event_handler('loc_end_index', 'monplugin_index');
 
function monplugin_index(){
    global $template, $page, $conf;
    if(isset($page['section']) and $page['section'] == 'ma_section'){
	include('monplugin.php');
    }
}

Vous pouvez aussi inclure des fichiers différents si une sous-section est spécifiée.

function monplugin_index(){
    global $template, $page, $conf;
    if(isset($page['section']) and $page['section'] == 'ma_section'){
        if(isset($page['sub_section'])){
	    include('monplugin_sub_section.php');
        }else{
            include('monplugin_global_section;php');
        }
    }
}

Il ne reste plus qu'à coder votre plugin dans les pages précédemment incluses et dans les fichier templates correspondants que vous appellerez avec

$template->set_filenames(array('index'=> dirname(__FILE__).'/template/xxxxx.tpl'));

Ajouter un lien dans le menu

à venir

Ajouter un block dans le menu

à venir

 
Haut de page
projet/developpement/plugins/exemple_ajouter_une_section_a_la_galerie.txt · Dernière modification: 2010/08/15 16:11 par mistic100
 
 
github twitter newsletter Faire un don Piwigo.org © 2002-2020 · Contact