Wie bringt man Drupal dazu, beim Anmelden zu einer anderen Seite als dem Benutzerprofil zu wechseln?

7

PROBLEM: Ich habe ein paar Dinge versucht, um Drupal dazu zu bringen, beim Anmelden nicht mehr zur User Prolfile-Seite zu wechseln. Ich habe sogar das LoginToboggan- Modul installiert , das nette Funktionen bietet und Drupal nicht davon abhält, alle Benutzer, die sich anmelden, auf ihre Benutzerprofilseite zu senden. Um ganz klar zu sein, LoginToboggans "Optionale Weiterleitung [des] Benutzers] auf eine bestimmte Seite bei Verwendung der Funktion" Sofortige Anmeldung "- ist NUR für neue Benutzer, nicht für vorhandene Benutzer ... Ja, ich weiß, macht keinen Sinn.

ZIEL: Sie müssen nur in der Lage sein, die Anmeldeseite einzurichten. Sie müssen die Seitenlast nicht basierend auf der Rolle festlegen, aber hey, das wäre schön, wenn es kein verrückter Komplex wäre.

UPDATE: Ich habe einen Fix gefunden, der auf meinen Bedürfnissen basiert, siehe meine Antwort unten.

Fehler
quelle

Antworten:

2

Du kannst:

  • Verwenden Sie das Modul Anmeldeziel .
  • Lassen Sie Ihre Benutzer sich unter www.example.com/user?destination=some/path anmelden. Dadurch werden sie nach dem Absenden des Formulars auf www.example.com/some/path umgeleitet.
  • Schreiben Sie ein benutzerdefiniertes Modul und implementieren Sie hook_form_alter. Es wird hier erklärt: http://drupal.org/node/236234 .
Marcvangend
quelle
@marcvangend: Danke, ich habe diese Lösung bereits fertiggestellt, aber ich werde Ihren Vorschlag so schnell wie möglich überprüfen. Prost & nochmals danke !!
Fehler
3

Herausgefunden. Also, du:

EINRICHTEN:

  1. Erstelle eine Seite,
  2. Lassen Sie das Standard-Anmeldemodul NUR mit den BLOCK-Konfigurationseinstellungen auf der SEITE anzeigen.
  3. Beim Laden müssen BLOCKS so eingestellt sein, dass NUR Inhalte für Benutzer dieser ROLLE angezeigt werden.

PROBLEME: Der Nachteil ist, dass ein Benutzer, der sich NICHT angemeldet hat, den Seitentitel und ein Benutzer, der sich anmelden kann, denselben Seitentitel sieht.

Bitte kommentieren Sie, wenn dies keinen Sinn ergibt, ODER senden Sie eine andere Antwort, wenn es eine bessere Lösung gibt. Vielen Dank!!

Fehler
quelle
In dieser (meiner Meinung nach eher hackigen) Lösung verwenden Sie das Verhalten, dass der Anmeldeblock standardmäßig auf die Seite umleitet, auf der sich der Benutzer vor dem Anmelden befand. Abgesehen von den bereits erwähnten Nachteilen wird sich diese Methode meiner Meinung nach beweisen auf lange Sicht sehr unflexibel sein. Es gibt bessere Methoden, siehe meine Antwort.
Marcvangend
1

Ich habe gehört, dass mehrere Personen das Regelmodul verwenden, um Personen beim Anmelden auf verschiedene Seiten zu leiten, abhängig von ihrer Rolle, oder um eine allgemeine Weiterleitung zu der Seite durchzuführen, von der aus sich die Person angemeldet hat.

http://drupal.org/project/rules

Purcell
quelle
@ Purcell: Es ist möglich, ich weiß es nicht. Ich hatte Regeln gehört, die hauptsächlich als Steuerelemente für den Inhaltsworkflow verwendet wurden, hatte aber wirklich keine Gelegenheit, sie anzusehen. Danke fürs Schreiben!!
Fehler
1

Natürlich können Sie dies in Drupal mit dem Modul Regeln tun ...

Hier ist ein Beispiel für eine solche Regel für Drupal Version 7 im sogenannten "Exportformat" für Regeln:

{ "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" } } ]
  }
}

Sie sollten in der Lage sein, die oben genannte Regel in Ihrer eigenen Drupal-Installation über die Adup-Benutzeroberfläche von Drupal zu " importieren ". Verwenden Sie dazu den Link " Importregel ", der sich auf dem relativen Pfad admin/config/workflow/rules/reaction/importIhrer eigenen Drupal-Site befindet.

Einige weitere Details darüber, was die obige Regel tatsächlich bewirkt:

  1. Es wird durch das Rules Event = ausgelöst User has logged in.
  2. Es enthält eine Regelbedingung, die in diesem Fall lautet User has role(s) = subscriber. Tatsächlich entspricht das 4im obigen Exportformat subscriberder Drupal-Installation, aus der ich es exportiert habe, wenn Sie es vor dem Import ändern würden, 4dem a 3, dem es administratorstattdessen entspricht (wählen Sie einfach die gewünschte "Rolle" aus, indem Sie sie ändern es über die Benutzeroberfläche der Regeln, nachdem Sie diese Regel importiert haben). Wenn Sie möchten, dass dies für eine Rolle gilt, lassen Sie diese Regelbedingung einfach weg (löschen Sie sie) (der einfachste Weg, ein solches Löschen durchzuführen, ist die Verwendung der Regel-Benutzeroberfläche, nachdem Sie dieses Beispiel importiert haben).
  3. Es wird eine Regelaktion = ausgeführt Page redirect = node/123. Dies node/123ist in der Drupal-Installation erwünscht, aus der ich dies exportiert habe. Sie können dies jedoch einfach in einen beliebigen gültigen (relativen) Pfad ändern. Stellen Sie daher sicher, dass Sie dies node/123in den relativen Pfad der Seite ändern, der Ihrer " ... Seite außer dem Benutzerprofil beim Anmelden ... " entspricht.

Das war's, funktioniert wie ein Zauber!

Sie können es noch (viel) komplexer gestalten, indem Sie die Regel mit folgenden Optionen erweitern:

  • Weiterleiten zu einer Seite (Pfad), die von der Rolle der Benutzer abhängt.
  • Stellen Sie sicher, dass die Weiterleitung von den Wochentagen oder der Tageszeit abhängt (z. B. während der Öffnungs- / Schließzeiten eines Geschäfts).

PS: wenn Sie in (Weg) weitere Beispiele für erstaunliche Dinge interessieren Sie mit dem tun Rules - Modul, dann besuchen Sie diese Antworten auf Drupal.SE (auf Fragen mit der markierten Rules - Modul).

Pierre.Vriens
quelle