web-dev-qa-db-fra.com

Comment obtenez-vous Drupal accéder à une page autre que le profil de l'utilisateur lors de la connexion?

PROBLÈME: J'ai essayé quelques trucs pour obtenir Drupal d'arrêter d'aller à la page de l'utilisateur Prolfile lors de la connexion. J'ai même installé le module LoginToboggan , qui contient des fonctionnalités intéressantes, n'arrête pas Drupal d'envoyer tous les utilisateurs qui se connectent à leur page de profil utilisateur. Juste pour être clair, LoginToboggan "redirige éventuellement [l'utilisateur] vers une page spécifique lors de l'utilisation de la fonctionnalité de" connexion immédiate "" - est UNIQUEMENT pour les nouveaux utilisateurs, pas les utilisateurs existants ... Oui, je sais, cela n'a aucun sens.

OBJECTIF: Il suffit de pouvoir définir la page de connexion. pas besoin de définir le chargement de la page en fonction du rôle, mais bon, ce serait bien si ce n’est pas un complexe fou.

UPDATE: Vous avez trouvé un correctif en fonction de mes besoins, voir ma réponse ci-dessous.

7
blunders

Vous pouvez:

  • Utilisez le module Login Destination .
  • Laissez vos utilisateurs se connecter sur www.example.com/user?destination=some/path. Cela les redirigera vers www.example.com/some/path après avoir soumis le formulaire.
  • Ecrivez un module personnalisé en implémentant hook_form_alter. C'est expliqué ici: http://drupal.org/node/236234 .
2
marcvangend

Deviner. Alors vous:

CONFIGURATION:

  1. Créer une page,
  2. Afficher le module de connexion par défaut UNIQUEMENT sur la PAGE à l'aide des paramètres de configuration BLOCK.
  3. Lors du chargement, BLOCKS est configuré pour afficher UNIQUEMENT le contenu aux utilisateurs de ce ROLE.

PROBLÈMES: L'inconvénient est qu'un utilisateur non connecté verra la page TITLE et qu'un utilisateur capable de se connecter verra la même page TITLE.

Veuillez commenter si cela n’a aucun sens, OR postez une autre réponse s’il existe une meilleure solution. Merci!!

3
blunders

J'ai entendu dire que plusieurs personnes utilisent le module de règles pour diriger les utilisateurs vers différentes pages lors de la connexion, en fonction de leur rôle, ou simplement pour effectuer une redirection générale vers la page à partir de laquelle la personne s'est connectée.

http://drupal.org/project/rules

1
Purcell

Bien sûr, vous pouvez le faire dans Drupal en utilisant le module Règles ...

Voici un exemple d'une telle règle pour Drupal version 7, dans ce qu'on appelle Règles "format d'exportation":

{ "rules_redirect_selected_roles_to_selected_term_pages" : {
    "LABEL" : "Redirect selected roles to selected term pages",
    "PLUGIN" : "reaction rule",
    "ACTIVE" : false,
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : { "user_login" : [] },
    "IF" : [
      { "user_has_role" : { "account" : [ "account" ], "roles" : { "value" : { "5" : "5" } } } }
    ],
    "DO" : [ { "redirect" : { "url" : "node\/123" } } ]
  }
}

Vous devriez pouvoir simplement "importer" la règle ci-dessus dans votre propre installation Drupal via l'interface utilisateur de Drupal, à l'aide du lien intitulé " règle d'importation ". situé au chemin relatif admin/config/workflow/rules/reaction/import dans votre propre site Drupal.

Quelques détails supplémentaires sur ce que la règle ci-dessus fait réellement:

  1. Il est déclenché par le Evénement de règles = User has logged in.
  2. Il inclut un Condition de règles qui dans ce cas est User has role(s) = subscriber. En fait, le 4 du format d’exportation ci-dessus correspond à subscriber de l’installation Drupal où j’ai exporté cette information, si vous voulez la modifier avant de l’importer, que 4 un 3, il correspondrait à administrator à la place (choisissez le "rôle" de votre choix, en le modifiant à l'aide de l'interface utilisateur des règles, après avoir importé cette règle). Si vous souhaitez que cela s'applique à un rôle, omettez (supprimez) cette condition de règles (le moyen le plus simple de procéder à cette suppression consiste à utiliser l'interface utilisateur des règles après avoir importé cet exemple).
  3. Il effectuera une Action des règles = Page redirect = node/123. Ce node/123 correspond à ce qui est souhaité dans l'installation Drupal d'où je l'ai exporté, mais vous pouvez simplement le remplacer par n'importe quel chemin valide (relatif) de votre choix. Assurez-vous donc que node/123 soit remplacé par le chemin relatif de la page correspondant à votre page " ... autre que le profil de l'utilisateur lors de la connexion ... ".

Ça y est, fonctionne comme un charme!

Vous pourriez le rendre encore plus sophistiqué en améliorant la règle avec des options telles que:

  • Rediriger vers une page (chemin) qui dépend du rôle des utilisateurs.
  • Faites en sorte que la redirection dépende du ou des jours de la semaine ou de l’heure de la journée (par exemple, aux heures d’ouverture/fermeture d’un magasin).

PS: si vous êtes intéressé par (plus ou moins) plusieurs exemples de choses étonnantes que vous pouvez faire avec le module Règles , alors visitez ces réponses sur Drupal.SE (aux questions marquées avec le module Règles ).

1
Pierre.Vriens