[XenForo] Créer une extension basique !

Statut
N'est pas ouverte pour d'autres réponses.

Walky 🇫🇷

Cryptoboy
Ancien staff
Inscription
18 Octobre 2012
Messages
1 278
Réactions
1 187
Points
23 400
Salut tous le monde :D
Dans ce tutoriel je vais vous apprendre à créer une simple extension pour xenforo :D

Ce dont vous aurez besoin :

  • Un éditeur de texte (de préférence Notepad++)
  • De basses connaissances en PHP (je fournis tous les codes)
  • Des connaissances en XenForo
Bon maintenant que vous avez tout (ou pas :trollface:) Commençons :

1 - Le Mode Debug

Tout d'abord on va commencer par installer le Mode Debug sur notre forum !
Pour ce faire : Connectez-vous à votre FTP ; Ensuite naviguez ici : library -> config.php ; Ouvrez ce fichier
Dedans vous devrez y voir :
PHP:
<?php

$config['db']['host'] = 'serverDeLaDB';
$config['db']['port'] = 'portDeLaDB';
$config['db']['username'] = 'userDeLaDB';
$config['db']['password'] = 'mdpDeLaDB';
$config['db']['dbname'] = 'nomDeLaDB';

$config['superAdmins'] = '1';

Ajoutez tout en bas :
PHP:
$config['debug'] = true;

Une fois ceci fais, Sauvegardez !
Retournez sur votre Admin CP et vous devriez apercevoir un nouvel onglet nommé : Développement !
SI c'est le cas c'est que vous êtes bon :D

2 - Le côté XenForo

Maintenant que nous avons notre nouvel onglet on va commencer les choses sérieuses ^^
On va désormais créé l'extension via L'admin CP
Rendez-vous ici : Admin CP -> Accueil -> Extension -> + Créer une extension

La vous devriez voir quelques champs à remplir, je vais vous les expliquer 1 par 1.

ID de l'extension = Doit être un ID unique
Titre = Le nom que vous voudrez attribuer à votre extension
Version = La version de votre extension (normalement : 1.0)
ID de la version = Nombre Utilisé pour des comparaisons de version internes, veillez à l'augmenter à chaque nouvelle version (je vous conseil de rentrer 10 au début)
URL = Url de redirection lorsqu'un administrateur cliquera dessus
Code d'installation et de désinstallation = Inutile pour le moment

Voilà, je vous laisse rentrer les informations de votre extension :)
Sauvegardez

Vous devriez voir votre nouvelle extension sur la liste des extensions ^^

Maintenant on va créé un template (qui affichera votre extension)
Rendez-vous ici : Admin CP -> Apparence -> Templates (veillez à bien avoir choisi le style maître) -> + Créer un nouveau template !

Dans nom du template, rentrez le nom que portera votre template !
Et dans le grand carré blanc rentrez le texte de votre template (je vous conseil d'écrire : test ; pour voir si l'extension fonctionnera)
Et dans Extension : Sélectionnez l'extension que vous avez créé auparavant :)
Sauvegardez :D

Mon template : test_RG


Maintenant que nous avons notre template on va passer niveau PHP (aucune inquiétude je suis là :p)

2 - Le côté PHP

Avant de coder, on va d'abord allez observer les événements ^^
Pour ce faire allez ici : Admin CP -> Développement -> Observateur d'événements -> + Créer un nouvel auditeur d'événement

La vous devriez encore avoirs des champs à remplir mais je vais vous guider ^^

Choisir l'événement : template_hook
Trace d'événement : Inutile pour nous

Voilà vous pouvez vous arrêter là comme nous n'avons pas encore le code PHP :)
Mais attention ne sauvegardez pas ;)

Allez dans vos FTP ;
Allez dans le dossier library ;
Créez un nouveau dossier (pour ma part: Test) ;
Dans ce nouveau dossier créez un autre dossier (je vous conseil : Listener) ;
Et dans ce dossier créez un fichier (je vous conseil : Listener.php) ; /!\ N'oubliez pas le .php

Ouvrez ce fichier !
Il n'y a rien dedans :(

Pour commencer à le remplir on va ajouter la balise PHP :
PHP:
<?php
// ici il y aura tout le code
?>

Maintenant on va déterminer la class du fichier !
Si vous avez suivi mes conseils ça sera : Test/Listener/Listener
Mais en PHP on traduit les / par des _
Ce qui va nous donner :
PHP:
<?php

class Test_Listener_Listener
{

}
?>

On a déclaré notre class !!! :D
Mais ça ne s'arrêt pas là ! :(
On va maintenant ajouter une fonction statique :)
PHP:
<?php

class Test_Listener_Listener
{
      public static function hook(callback signature)
      {

      }
}
?>

Vous pouvez bien évidemment remplacer le nom de la fonction ^^ Moi c'est hook
A la place de callback signature vous devrez mettre la callback signature de l'événement !
Vous trouverez la callback signature lors de la création de votre événement
Pour template_hook c'est (en version 1.3) :
PHP:
$hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template

Ce qui va nous donner :
PHP:
<?php

class Test_Listener_Listener
{
      public static function hook($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template)
      {

      }
}
?>

Maintenant il nous reste juste à trouver un HOOK :D

Pour trouver un hook c'est très simple ^^
Vous allez dans les templates et vous faîtes rechercher les templates par ce mot-clé : ad_
La des templates du genre : ad_header ou encore ad_above_top_breadcrumb vont apparaître :D
Je vous explique l'emplacement de quelques un :

  • ad_above_top_breadcrumb = au dessus de la navigation rapide
  • ad_header = tout en haut de la page
  • ad_sidebar_top = au dessus de la barre latérale
  • ad_message_below = en dessous de chaque message de topic
Voilà mais il y en a plein d'autres à vous de choisir le votre ^^
Moi je vais choisir ad_above_top_breadcrumb pour afficher mon texte au dessus de la navigation rapide :)

Un exemple :
PHP:
<?php

class Test_Listener_Listener
{
      public static function hook($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template)
      {
            if ($hookName == 'nom de votre hook')
            {
                    switch($hookName)
                    {
                          case 'nom de votre hook':
                                 $hook = $template->create('nom de votre template', $template->getParams());
                                 $contents = $hook . $contents;
                                 break;
                    }
            }
      }
}
?>

Ce qui donne pour moi :
PHP:
<?php

class Test_Listener_Listener
{
      public static function hook($hookName, &$contents, array $hookParams, XenForo_Template_Abstract $template)
      {
            if ($hookName == 'ad_above_top_breadcrumb')
            {
                    switch($hookName)
                    {
                          case 'ad_above_top_breadcrumb':
                                 $hook = $template->create('test_RG', $template->getParams());
                                 $contents = $hook . $contents;
                                 break;
                    }
            }
      }
}
?>
Voilà :D

Veillez à bien remplacer : test_RG par le nom de votre template ;)
Et : ad_above_top_breadcrumb par le nom de votre hook.
Sauvegardez le fichier ^^

Maintenant retournons sur notre page ou l'on était en train de créer l'événement :D
Dans :
Exécutez rappel de service: Mettez dans : Classes : LA Class de votre fichier PHP (pour ma part : Test_Listener_Listener)
Et dans : Méthode : LA nom de la fonction de votre fichier PHP (pour ma part : hook)
Dans : Ordre de rappel d'éxecution: Laissez par défaut 10

Vous laissez cocher : Activer l'exécution de rappel
Description : Vous mettez ce que vous voulez :p
Extension : Vous choisissez l'extension créé auparavant ^^

Sauvegardez :)

Retournez sur votre forum !
Et ... Oh ! C'est magique votre texte apparaît :D

Voilà j'espère que ce tuto vous aura plus ^^


PS :Je vous laissez une de mes extensions créés comme ceci ;)
 

Fichiers joints

  • Youtube video in sidebar 1.0.3.zip
    3.2 KB · Affichages: 40

Maxence ES

Guizou
Premium
Inscription
23 Janvier 2013
Messages
4 842
Réactions
3 146
Points
17 331
Je kiffe le PHP, mais le POO je déteste ça :(
Bon tutoriel :)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut