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.

4 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.

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.

Commentaires

  • linda: Une autre question pour continuer d'avancer, j'espère que vous aurez une solution. Je dois faire d [...]
  • linda: Merci pour ton invitation Julien. Je ne suis hélas pas sur Paris mais j'avoue que je cherche bien v [...]
  • Anthony: Merci pour le lien ! Les tutos sont vraiment très bien fait et de manière très progressive. Lie [...]
  • Julien: Oui y'a de bonnes infos sur Kolossaldrupal Si tu es sur Paris on organise une rencontre entre dru [...]
  • linda: Bonjour Anthony et merci. J'ai déjà visité le site que tu me conseilles et après de multiples [...]