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.

6 Responses to Rediriger un utilisateur vers une page après s’être logué en programmation

Avatar

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 ?

Avatar

Julien

février 21st, 2010 at 23 h 21 min

Oui effectivement c’est une expérience vraiment enrichissante.

Avatar

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 ?

Avatar

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.

Avatar

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

Avatar

jay

juin 7th, 2011 at 11 h 22 min

Merci pour l’astuce!

Comment Form



About me

about me

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.

I am going to DrupalCon London!

Commentaires

  • opi: Merci pour l'article, spécialement l'astuce du parcours d'un repertoire 'views', à la recherches d [...]
  • Julien: Il faut reconnaître quand même un avantage à Features, c'est de réunir en un seul module la poss [...]
  • Netmee: Super article. Je partage ta vision sur le coté plus light de cette solution face à Features. D'un [...]
  • Pascal H: Bonjour, je viens de découvrir Drupal et, quelques lectures plus tard votre blog. Félicitation [...]
  • Gilles: Merci pour cet article très intéressant. Je m'intéresse à l'externalisation de la saisi pour fa [...]