Développeur Drupal – Blog d'un passionné, un peu touche à tout, dans le monde du web.
Lorsque vos utilisateurs se connectent à votre site ils arrivent sur leur page de profil (/user), qui est la page par défaut. Pour changer cela vous avez la possibilité d’utiliser le module logintoboggan ou de le faire en programmation en quelques lignes.
1. Il vous faut créer un module que vous placerez dans le répertoire /sites/all/modules. au minimum vous devez avoir un dossier contenant votre fichier monmodule.info et monmodule.module.
2. Pour interagir avec la connexion de l’utilisateur nous allons utiliser la fonction hook_user($op, &$edit, &$account, $category = NULL) et guetter l’événement de login.
function monmodule_user($op, &$edit, &$account, $category = NULL) {
switch ($op) {
// On attend l'opération de login de l'utilisateur
case 'login':
// On change l'adresse de destination de notre utilisateur vers la liste des dernières actualités
$_REQUEST['destination'] = 'content/actualites/';
break;
}
}
Maintenant lorsque vos visiteurs se connecteront à votre site ils seront redirigés vers cette nouvelle page personnelle.
Attention aux Actions et Déclencheurs que vous avez crées. Ne vous étonnez pas si votre redirection ne fonctionne pas si vous avez affecté des actions sur l’événement ‘après connexion de l’utilisateur’. Le module Trigger est exécuté avant votre module perso et ne prendra pas en compte votre fonction.
Bienvenue sur mon blog. Sur cet espace j’essaie de partager au mieux ma passion pour le web et actuellement mon engouement pour Drupal. Vous trouverez ici mes découvertes, mes problématiques et les solutions rencontrées.
6 Responses to Rediriger un utilisateur vers une page après s’être logué en programmation
timos
février 15th, 2010 at 17 h 15 min
Hello et merci pour cette astuce !
J’ai vu que tu avais bosser sur le site du figaro, j’imagine une expérience super enrichissante, non ?
Julien
février 21st, 2010 at 23 h 21 min
Oui effectivement c’est une expérience vraiment enrichissante.
timos
avril 9th, 2010 at 14 h 10 min
Salut,
J’avais utilisé ton astuce pour un module que je viens de retravailler.
J’ai testé la même chose en utilisant la fonction drupal_goto() plutôt que de redéfinir la variable $_REQUEST.
cela donne :
drupal_goto('content/actualites/');
à la place de
$_REQUEST['destination'] = 'content/actualites/';
Ca marche très bien aussi.
Mais as-tu utilisé directement $_REQUEST pour une raison précise ?
Julien
avril 16th, 2010 at 18 h 59 min
Effectivement la fonction drupal_goto marche aussi.
A vrai dire je ne sais plus pourquoi j’ai directement modifié le $_REQUEST, certainement pour simplifier l’exemple.
Fabien
août 11th, 2010 at 15 h 48 min
Oui il y a une raison précise quant à l’emploi de $_REQUEST au lieu de drupal_goto(). Car drupal_goto() ne fonctionne pas dans certains cas, notamment lorsqu’on se connecte à partir du bloc de connexion et non de la page user.
Voir explication à http://drupal.org/node/321573#comment-1077089
jay
juin 7th, 2011 at 11 h 22 min
Merci pour l’astuce!