Système de Hook
Introduction
Le système de Hook permet d'ajouter dans les templates de son choix, les fonctionnalités que l'on souhaite.
Pour exploiter les hooks on écrira dans son template :
{hook 'event', $params}
où event est le nom de l'évènement déclenchant la récupération de toutes fonctionnalités et $params est le tableau des paramètres passés au listenener répondant à event.
Exemple :
{hook 'SampleBannerAnnouncement'}
Affichera une bannière d'annonce dans le template de votre choix en répondant à l'event SampleBannerAnnouncement.
Liste des Hooks
- Category :
- hfbBeforeCategoryList
- hfbCategoryList (parm => id_cat)
- hfbAfterCategoryList
- Forum :
- hfbBeforeForumIndex
- hfbForumIndex (parm => id_forum)
- hfbAfterForumIndex
- Posts :
- hfbBeforePostsEdit (parm => id_posts)
- hfbPostsEdit (parm => id_posts)
- hfbAfterPostsEdit (parm => id_posts)
- hfbBeforePostsReplies (parm => id_posts)
- hfbPostsReplies (parm => id_posts)
- hfbAfterPostsReplies (parm => id_posts)
- hfbBeforePostsList (parm => id_posts)
- hfbPostsList (parm => id_posts)
- hfbAfterPostsList (parm => id_posts)
- Statistiques
- hfbBeforeStats
- hfbStats
- hfbAfterStats
- hfbBeforeOnlineToday
- hfbOnlineToday
- hfbAfterOnlineToday
- hfbBeforeOnline
- hfbOnline
- hfbAfterOnline
- Flood :
- hfbBeforeFlood
- hfbFlood
- hfbAfterFlood
- Ban :
- hfbBeforeBan
- hfbBan
- hfbAfterBan
- Account :
- hfbAccountShowBefore (parm => login)
- hfbAccountShowTab (parm => login)
- hfbAccountShowDiv (parm => login)
- hfbAccountShowAfter (parm => login)
- hfbAccountEditBefore (parm => login)
- hfbAccountEditTab (parm => login)
- hfbAccountEditDiv (parm => login)
- hfbAccountEditAfter (parm => login)
- Membres
- hfbBeforeMembersList
- hfbMembersList ( parm => user )
- hfbAfterMembersList
- hfbBeforeMemberProfile ( parm => id )
- hfbMemberProfile ( parm => id )
- hfbAfterMemberProfile ( parm => id )
- Search
- hfbBeforeSearch
- hfbSearch
- hfbAfterSearch
- Main
- hfbMainInHeader
- hfbMainInFooter
- Status (jCommunity)
- JcommunityStatusConnected (parm = login)
Nomenclature des Hooks
ceci vous permettra de comprendre, en lisant un nom d'event, à quelle page / template se rapporte ce hook.
- BeforeTemplateName
- TemplateName
- AfterTemplateName
où :
- TemplateName est le nom du template où est utilisé le hook
- BeforeTemplateName est le nom du hook appelé au debut du template TemplateName
- TemplateName est egalement l'endroit où est appelé le hook (au milieu du template)
- AfterTemplateName est le nom du hook appelé à la fin du template TemplateName
Dépôt de Hooks
Où ?
Le dépôt se trouve dans le dossier dédié modules-hook
Pourquoi un dépôt ?
Ceci permet de centraliser les modules ne répondants qu'aux events de ces hooks
Comment répondre aux hooks ?
Il vous faut produire un module (cf le module d'exemple modules-hook/hook ) :
- un listener
- une zone
- un template
- le Listener se chargera de répondre à l'évènement en appelant une zone
class hookListener extends jEventListener{ function onhfbSampleBannerAnnouncement ($event) { $event->add( jZone::get('hook~samplebanner_accouncement') ); } } - fichier events.xml permettant de définir le listener qui répondra à l'évent
<?xml version="1.0" encoding="iso-8859-1"?> <events xmlns="http://jelix.org/ns/events/1.0"> <listener name="hook"> <event name="hfnSampleBannerAnnouncement" /> </listener> </events>
- la zone exploitera les données de votre choix et les fournira à son template
class samplebanner_accouncementZone extends jZone { protected $_tplname='zone.samplebanner_accouncement'; protected function _prepareTpl(){ $this->_tpl->assign('text',jLocale::get('hook~main.welcome')); } } - le template affichera les données
<div class="grid_16"> <div class="box"> <h2>Banner</h2> {$text} </div> </div> <div class="clear"></div>
tout cela sera ensuite retourné au Hook à l'endroit du template voulu.

