1899

Ancien staff
Inscription
10 Août 2012
Messages
9 798
Réactions
4 482
Points
29 037
header.png
Bonjour à tous, aujourd'hui je vous propose un tutoriel sur l'utilisation des hook sur xenForo.

Les hook sur xenForo vous permettrons de lier une template a une balise placé dans une autre template. Par exemple, une template contenant la balise <xen:hook name="ad_sidebar_bottom" /> pourra, si vous le voulez, être lié à une template que vous avez créée. C'est utile pour créer des blocks dans la sidebar par exemple et éviter d'avoir trop de code dans une même template. L'avantage de l'utilisation des hooks, c'est que pour désactiver le template, vous aurez juste à désactiver l'addon que vous avez crée.
Dans ce tutoriel, nous verrons comment créer un block contenant la liste des grades sur un forum.

Prêt ? Allons y !

Création de l'addon

Tout dabord, nous allons créer un addon qui nous permettra de contrôler le hook.
Il faut bien évidemment activer le mode debug pour pouvoir accéder à l'onglet développement dans votre panel, si il n'est pas activé ajoutez ce code dans votre fichier config.php (disponible dans le dossier library) :
PHP:
$config['debug'] = '1';

Une fois l'onglet développement disponible, rendez vous dans + Créer une extension et remplissez les champs :

  1. ID de l'extension : rankList
  2. Titre : Liste des rangs du forum
  3. Version : 1.0.0
  4. ID de la version : 1
  5. URL : laissez vide
  6. Code d'installation : laissez vide
  7. Code de désinstallation : laissez vide
Enregistrez, et maintenant vous avez votre extension d'installé.
Maintenant, allons créer un observateur d'évenement qui vous permettra d'activer la function template_hook sur votre extension. Rendez vous dans + Créer un auditeur d’événement et remplissez les champs :

  1. Choisir l'événement : choisissez template_hook
  2. Trace d’événement : laissez vide
  3. Exécuter rappel de service : laissez vide (pour le moment)
  4. Ordre de rappel d’exécution : laissez la valeur 10
  5. Description : Liste des rangs
  6. Extension : choisissez l'extension que vous avez créée auparavant
Votre observateur d’événement est désormais configuré MAIS n'enregistrez pas maintenant car ce n'est pas fini !
Nous allons procéder au développement du Listener sur votre ftp.

Création des fichiers de l'extension

Maintenant, rendez vous dans votre ftp et plus particulièrement dans votre fichier library où vous allez créer le dossier de votre extension.
Donc, dans votre dossier library, créez un dossier RankList puis créez un fichier Listener.php à l'intérieur de ce même dossier. Vous aurez donc cette arborescence :

  • library
    • RankList
      • Listener.php
Ouvrez votre fichier Listener.php et commencez par indiquer la class :

PHP:
<?php

class RankList_Listener
{
Maintenant, nous allons indiquer la function template_hook :
PHP:
public static function templateHook($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template)
{
Maintenant, nous allons chercher le hook en question :
PHP:
if($hookName == 'votreHook')
{
Et pour finir nous allons lier la template que nous allons créer par la suite :
PHP:
            $contents .= $template->create('votreTemplate');
        }
    }
}

Une fois le code fini, vous devrez avoir un code similaire à celui-ci :
PHP:
<?php

class RankList_Listener // class de votre addon
{
    public static function templateHook($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template) // function hook
        {
        if($hookName == 'votreHook') // recherche du hook
        {
            $contents .= $template->create('votreTemplate'); // lier la template créée
        }
    }
}

Maintenant, allons chercher notre hook. Je souhaite que mon block s'affiche tout en bas de la sidebar, je me rends donc dans le template ad_sidebar_bottom et là je trouve mon hook : <xen:hook name="ad_sidebar_bottom" />
Mon hook étant trouvé, je vais donc remplacer votreHook par ad_sidebar_bottom dans mon fichier Listener.php !

Pour finir, allons créer la template où vous devrez placer votre contenu. Pour créer la template, rendez vous dans l'onglet Apparence > Templates > + Créer un nouveau template et remplissez les champs :

  • Nom du template : rankList
  • Contenu : <p>test</p>
  • Extension : choisissez l’extension que nous avons créée
Enregistrez et maintenant que nous avons créée notre template, remplaçons votreTemplate par rankList dans notre fichier Listener.php !

Dernièrement, vous devez entrer la class pour éxecuter le rappel de service dans la page de création de l'observateur d'événements en mettant dans la première case la class (RankList_Listener) et dans la seconde la méthode utilisé (templateHook).

Vous pouvez maintenant enregistrer vos modifications dans votre page où vous avez configuré l'observateur d’événement, votre hook est opérationnel !

Résultat

Voici le résultat :
Screenshot_1.png


Maintenant j'insère mon code :
Screenshot_2.png


Et voilà, tutoriel terminé !

Si il y'a certaines choses que vous n'avez pas compris, n'hésitez pas à me poster un message j'y répondrais le plus clairement possible.

Bonne journée,
Hayzen
 
Dernière édition:
Haut