Gestionnaire de page

Elgg offre des outils pour gérer vos pages plugin via un gestionnaire de page, permettant des URLs personnalisées comme http://votresite/votre_plugin/section. Pour ajouter un gestionnaire de page à un plugin, une fonction de gestionnaire doit être enregistrée dans le fichier start.php du plugin avec elgg_register_page_handler() :

elgg_register_page_handler('your_plugin', 'your_plugin_page_handler');

Le gestionnaire de page du plugin reçoit deux paramètres :

  • un tableau contenant les sections de l’URL découpées par “/”. Avec ces informations, le gestionnaire sera en mesure d’appliquer toute la logique nécessaire, par exemple le chargement de la vue appropriée et le retour de son contenu.

  • le gestionnaire, c’est le gestionnaire qui est actuellement utilisé (dans notre exemple votre_plugin). Si vous n’enregistrez pas plusieurs gestionnaires de pages pour la même fonction, vous n’en aurez jamais besoin.

Flux de code

Les pages dans les plugins doivent être rendues via des gestionnaires de page (et non pas à l’aide de Elgg\Application). En général, le rendu est fait par des vues avec des noms commençant par resources/. Le flux du programme est quelque chose comme ceci :

  1. Un utilisateur demande /plugin_name/section/entity

  2. Elgg vérifie si plugin_name est enregistré dans un gestionnaire de page et appelle cette fonction, en passant array('section', 'entity') comme premier argument

  3. La fonction gestionnaire de page détermine quelle vue de ressource affichera la page.

  4. Le gestionnaire utilise elgg_view_resource() pour rendre la page, en transmettant également toutes les informations pertinentes à la vue via l’argument $vars.

  5. La vue de ressource combine de nombreuses vues distinctes, appelle des fonctions de mise en forme comme elgg_view_layout() et elgg_view_page(), puis génère la sortie finale

  6. L’utilisateur voit une page entièrement rendue

Il n’y a pas de syntaxe appliquée sur les URLs, mais les normes de codage d’Elgg suggèrent un certain format.