PunBB 1.3 et les Hooks
Date : 29/02/08 10:46:01
Si vous appréciez cet article cliquez sur ce bouton : 
Depuis quelques temps on peut profiter de la version 1.3 de PunBB en version BETA et croyais moi l'attente à été très longue, très longue. Etait elle jusitifée cette longue attente ? Je dirai un bon gros OUI ! Il y à pas mal de nouveauté sur cette nouvelle version mais je vais me focaliser sur une plus particulièrement : les hooks !
Juste une petite parenthèse pour dire que cette version de PunBB intègre nativement l'URL Rewriting adieu donc NewPunRewrite ou SimplyPunRW et c'est tant mieux !
Alors les hooks c'est quoi que c'est ?
C'est un petit bout de code placé dans les pages du forum, on en retrouve partout : index.php, viewtopic.php, viewforum.php elle sont sous cette forme :
($hook = get_hook('vt_row_pre_display')) ? eval($hook) : null;
Cela permet d'ajouter du code à l'endroit où se trouve le hook à l'aide d'un fichier .xml que nous appelerons une extension. C'est l'équivalent des mods actuelles mais SANS AUCUNE MODIFICATION DU CODE SOURCE DU FORUM !
On peut ainsi grâce à ces Hooks ajouter du code php très facilement, modifier/ajouter une requete mysql sans toucher au code source de PunBB !
Petit exemple de Hook très vite fait.
Je me suis laissé tenté par tester un Hook moi aussi pour voir un peu l'utilisation de ceux-ci. J'ai donc décidé de faire une extension qui permet d'afficher une publicité avant le premier post d'une discussion. Allez je me lance. J'ouvre donc le fichier où je veux que la modification soit faite donc viewtopic.php. Je cherche l'endroit où ajouter ma modification et hop voila un joli Hook à l'endroit voulu. (Si jamais un hook vous manques pour une modification, faites le savoir au staff de PunBB qui l'intègrera dans les futur version de PunBB).
Comme par hasard le Hook qui m'interesse est celui que j'ai mis en exemple au dessus. Le hasard fais vraiment bien les choses.
($hook = get_hook('vt_row_pre_display')) ? eval($hook) : null;
Je créé donc un nouveau fichier que je vais appeler manifest.xml et je place ce fichier dans un nouveau repertoire que j'appele publicite dans le repertoire extensions du forum. J'aurai donc mon fichier à cette adresse RACINE DE PUNBB/EXTENSIONS/PUBLICITE/manifest.xml
Je place le contenu de mon Hook, j'ai pris exemple avec une extension déjà existante pour la structure de base. Essayez, collez tout ça dans votre fichier manifest.xml :
<?xml version="1.0" encoding="utf-8"?> <extension engine="1.0"> <id>publicite</id> <title>Publicite avant le premier post d'une discussion</title> <version>1.0</version> <description>Cette extension va ajouter une publicite de votre choix juste avant le premier post d'une discussion.</description> <author>Thorze</author> <minversion>1.3 Beta</minversion> <maxtestedon>1.3 Beta</maxtestedon> <install> </install> <uninstall> </uninstall> <hooks> <hook id="vt_row_pre_display"><![CDATA[ if ($pun_page['item_count'] == 1) { ?> <div class="post odd replypost"> <div class="postmain"> <div id="p1" class="posthead"> <h3>Publicite</h3> </div> <div class="postbody"> <div class="user online"> <h4 class="user-ident"><strong class="username">Publicite</strong></h4> <ul class="user-info"> <li class="title"><span><strong>Title:</strong> Google</span></li> <li class="status"><span><strong>Status:</strong> Robot</span></li> </ul> </div> <div class="post-entry"> <h4 class="entry-title">Re: Essai</h4> <div class="entry-content"> <?php require PUN_ROOT.'extensions/publicite/pub.php'; ?> </div> </div> </div> </div> </div> <?php } ]]></hook> </hooks> </extension>
Ensuite, créez un nouveau fichier toujours dans le même repertoire publicite que vous appelerez pub.php. Vous pouvez placez dedans la publicité que vous voulez : google adsense, publité pour un forum, pour un site enfin ce que vous voulez. Voici mon fichier pub.php pour l'exemple :
<p>Placez ici la publicite que vous souhaitez voir apparaitre.</p> <p>Exemple de publicite avec mon site :</p> <p><a href="http://www.tcheval.net"><img src="http://www.tcheval.net/images/banniere.gif" alt="Tcheval.net : Le site de Tcheval."/></a></p>
Enregistrez vos deux fichiers. Et voila c'est fini vous avez fais votre première extension ou du moin avez compris comment que c'est que ça se passe ! Rendez vous ensuite dans l'administration de PunBB, cliquez sur l'onglet Extensions, puis sur Install Extensions et finalement cliquez sur install. Et voila la mod est correctement installée ! Rendez vous de suite sur une discussion pour voir si tout à bien marché vous devez vous retrouver avec quelque chose de se genre :
Je précise que je ne recommande pas l'utilisation de cette extension sur un forum. J'ai juste réalisé cette extension pour apprendre et découvrir un peu les bases des Hooks donc c'est à vos risque et péril. Vous pouvez quand même la télécharger en cliquant ici.
Ecrire un commentaire
- Les champs indispensables sont marqué avec le caractère*.
Posts: 2
Reply #3 on : Wed May 14, 2008, 17:55:58

Posts: 2
Reply #4 on : Mon July 14, 2008, 20:54:39