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.
Comment utiliser un hook
- MIMATA
- Membre
- Messages : 453
- Inscription : 23 Avr 2008 08:29
- Localisation : France
- Contact :
Comment utiliser un hook
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
- cyril
- Site Admin
- Messages : 171
- Inscription : 14 Avr 2008 20:20
- Localisation : Valence (Drôme)
Re: Comment utiliser un hook
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 :
'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
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é...
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
Cyril
- MIMATA
- Membre
- Messages : 453
- Inscription : 23 Avr 2008 08:29
- Localisation : France
- Contact :
Re: Comment utiliser un hook
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.
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
- MIMATA
- Membre
- Messages : 453
- Inscription : 23 Avr 2008 08:29
- Localisation : France
- Contact :
Re: Comment utiliser un hook
Bonjour,
Je relance ma question :
Si quelqu'un pouvait juste m'expliquer rapidement.
Merci
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 1 invité