2010-01-07 2 views
1

Je travaille sur un module et j'essaie d'ajouter du javascript à la page suivante qu'un utilisateur voit après la connexion ou la déconnexion. Appeler drupal_add_js() sur hook_user (op == login) ne semble pas fonctionner; Je suppose que c'est parce que drupal_goto est appelé après la connexion est terminée et une nouvelle demande de page est lancée.Comment ajouter du javascript à la page de connexion et de déconnexion de Drupal 6

J'ai envisagé d'utiliser hook_user pour définir des variables de session auxquelles je peux répondre lors du chargement de la page suivante, mais cela semble quelque peu fragile. Aucune suggestion?

Répondre

2

Si vous voulez quelque chose à reporter à une nouvelle page que vous avez seulement quelques options:

  • Alter l'URL.
  • Stocker dans la base de données.
  • Stocker en session.

La modification de l'URL serait probablement assez difficile et salissante. Stocker dans la session ou la base de données est fondamentalement la même chose. Donc, vous voudrez probablement utiliser le système de session Drupal au lieu de créer le vôtre.

Vous pouvez ajouter quelque chose dans la session, puis dans hook_init vérifier et si c'est là ajouter le js et le supprimer de la session.

Je ne pense pas que vous trouverez une bien meilleure solution, même si ce serait bien s'il y avait.

+0

Merci pour la réponse. Ouais ... Je pense que je vais le stocker dans la session et utiliser hook_init pour ajouter le js mais ne pas supprimer le trigger de la session à ce stade. Au lieu de cela, je demanderai au JS de faire un appel ajax pour supprimer le trigger de la session afin que je sache avec certitude que le JS a été exécuté. Espérons que nous ne négligeons pas la façon Drupal de le manipuler avec élégance. J'adorerais une option dans drupal_add_js pour que les js persistent jusqu'au chargement de la pleine page suivante. – Aaron

+0

J'ai joué avec ça et malheureusement ça ne marche pas. user_logout appelle session_destroy juste avant d'exécuter le hook (voir ici: http://api.drupal.org/api/function/user_logout/6) ce qui m'empêche d'enregistrer quoi que ce soit dans la session. Même exécuter session_start avant d'enregistrer dans $ _SESSION ne le résout pas. J'ai aussi essayé sess_write et sess_read sans chance (bien que j'ai lu des choses qui indiquent que je ne devrais pas les utiliser de toute façon). Aucune suggestion? – Aaron

+0

J'ai fini par coller le déclencheur dans l'URL en modifiant $ _REQUEST ['destination']. Je ne l'aime pas mais c'est le meilleur que je puisse trouver. Merci! – Aaron

Questions connexes