Comment utiliser un hook

Développement d'extensions tierces
Avatar de l’utilisateur
MIMATA
Membre
Messages : 453
Inscription : 23 Avr 2008 08:29
Localisation : France
Contact :

Comment utiliser un hook

Messagepar MIMATA » 10 Oct 2012 10:51

Bonjour,

Sur l'un de mes sites, j'ai un formulaire d'inscription assez long et en plusieurs étapes.

Je cherche à m'envoyer un email récapitulatif du compte du membre qui s'inscrit.

J'ai déjà mis en place l'extension une extension, registration_info_mailer qui fait exactement ce que je veux à un détail près...en effet, cette extension envoi un email quand un membre crée un compte et quand il se connecte or je souhaiterai l'appeler aussi lors d'une simple modification des données personnelles donc quand un membre modifie les informations de son compte.

En fait, idéalement, je souhaiterai pouvoir l'appeler quand je veux.

Donc j'ai pensé que l'utilisation des hooks pouvaient m'être utile ici, l'idée c'est d'appeler le hook activateAccount quand je veux pour déclencher l'appel à l'extension...je ne sais pas si c'est la bonne façon de raisonner.

J'ai essayé d'insérer dans une page un fichier php externe grâce à la balise d'insertion {{file::monfichier.php}} et en mettant les noms des méthodes des classes mais je dois passer des paramètres je crois...enfin bref.

Par exemple, dans l'extension registration_info_mailer, il y a une méthode sendRegistrationMail($intId, $arrData) qui visiblement permet l'envoi de l'email.

En tout cas, je n'ai absolument aucune idée de comment on utilise les hooks et je ne trouve aucun exemple parlant.

Comment on fait pour déclencher les méthodes d'une classe d'une extension à la demande ?

Merci pour vos conseils.
MIMATA - Votre Site Pro : http://www.votresitepro.com - Planète Astronomie : http://www.planete-astronomie.eu (NEW) et http://www.planete-astronomie.com - Forum de Planète Astronomie : http://forum.planete-astronomie.com - Jeu de questions Planète Astronomie : http://astroquiz.planete-astronomie.com - Vidéos de Planète Astronomie : http://videos.planete-astronomie.com

Avatar de l’utilisateur
cyril
Site Admin
Messages : 171
Inscription : 14 Avr 2008 20:20
Localisation : Valence (Drôme)

Re: Comment utiliser un hook

Messagepar cyril » 10 Oct 2012 13:27

Utiliser un hook, c'est très simple ! Il suffit de créer un dossier(ex : "MyCoolHooks") dans /system/modules/
Dans celui-ci on crée un autre dossier config dans lequel on crée un fichier config.php.
Pour ton problème, on va utiliser le hook updatePersonalData qui n'est pas dans la doc :?
Dans le fichier config.php tu écris :

Code : Tout sélectionner

<?php if (!defined('TL_ROOT')) die('You cannot access this file directly!');
$GLOBALS['TL_HOOKS']['updatePersonalData'][] = array('MyHooks', 'myUpdatePersonalData');
?>


'myUpdatePersonalData' correspond à la méthode contenu dans la classe PHP 'MyHooks' (qu'il nous faut créer), et qui sera utilisée par le hook 'updatePersonalData' du module Front office Données personnelles.

A la racine de notre module (/system/modules/MyCoolHooks/, on ajoute notre classe PHP dans un fichier MyHooks.php

Code : Tout sélectionner

<?php if (!defined('TL_ROOT')) die('You cannot access this file directly!');

class MyHooks extends Frontend
{
   public function myUpdatePersonalData(FrontendUser $objUser, $arrPost)
   {
      // var_dump($objUser); var_dump($arrPost); die; // décommenter la ligne pour afficher les valeurs
      $objEmail = new Email();
      $objEmail->from = $GLOBALS['TL_ADMIN_EMAIL'];
      $objEmail->fromName = $GLOBALS['TL_ADMIN_NAME'];
      $objEmail->subject = "Modification du compte : " . $objUser->username;
      $objEmail->text = "bla bla";
      $objEmail->sendTo($GLOBALS['TL_ADMIN_EMAIL']);
   }
}

?>


Maintenant, si tu met à jour un compte membre via le module Données personnelles, tu devrais recevoir un email ;)

Voilà pour les grandes lignes, en espérant t'avoir aidé...
Cordialement,

Cyril

Avatar de l’utilisateur
MIMATA
Membre
Messages : 453
Inscription : 23 Avr 2008 08:29
Localisation : France
Contact :

Re: Comment utiliser un hook

Messagepar MIMATA » 11 Oct 2012 10:28

Super, c'est génial, merci Cyril.

Effectivement, avec ton exemple, ça parait très simple.

J'ai fait quelques tests concluants, je vais donc trafiquer un peu tout ça en utilisant les méthodes de l'extension registration_info_mailer pour parvenir à mes fins.

Petite question subsidiaire.

Là, on déclenche l'action quand on met à jour les infos personnelles d'un membre mais peut-on la déclencher à la demande ? C'est-à-dire qu'en réalité, je voudrais que ce ne soit déclenché que lorsqu'on arrive sur la dernière page et pas chaque modification en fait. Est-ce que les Callbacks servent à ça et si oui comment les utiliser ?

Encore merci pour ton explication sur l'utilisation des hooks.
MIMATA - Votre Site Pro : http://www.votresitepro.com - Planète Astronomie : http://www.planete-astronomie.eu (NEW) et http://www.planete-astronomie.com - Forum de Planète Astronomie : http://forum.planete-astronomie.com - Jeu de questions Planète Astronomie : http://astroquiz.planete-astronomie.com - Vidéos de Planète Astronomie : http://videos.planete-astronomie.com

Avatar de l’utilisateur
MIMATA
Membre
Messages : 453
Inscription : 23 Avr 2008 08:29
Localisation : France
Contact :

Re: Comment utiliser un hook

Messagepar MIMATA » 06 Nov 2012 11:15

Bonjour,

Je relance ma question :
MIMATA a écrit :Là, on déclenche l'action quand on met à jour les infos personnelles d'un membre mais peut-on la déclencher à la demande ? C'est-à-dire qu'en réalité, je voudrais que ce ne soit déclenché que lorsqu'on arrive sur la dernière page et pas chaque modification en fait. Est-ce que les Callbacks servent à ça et si oui comment les utiliser ?

Si quelqu'un pouvait juste m'expliquer rapidement.

Merci
MIMATA - Votre Site Pro : http://www.votresitepro.com - Planète Astronomie : http://www.planete-astronomie.eu (NEW) et http://www.planete-astronomie.com - Forum de Planète Astronomie : http://forum.planete-astronomie.com - Jeu de questions Planète Astronomie : http://astroquiz.planete-astronomie.com - Vidéos de Planète Astronomie : http://videos.planete-astronomie.com


Revenir vers « Développement d'extensions »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 12 invités