Frontenduser logout

Hilfe zu Modulen und Tags
Post Reply
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm

Frontenduser logout

Post by TeXnik »

Ich hab das Frontenduser Modul installiert. Die FEU koennen sich aber nur dort ausloggen, wo sie auch einloggen koennen.

Wie realisiere ich, dass auf jeder Seite ein Logout-Button erscheint, sobald ein FEU eingeloggt ist?
Ich bin blutiger Anfaenger und habe keine Ahnung von php usw.
User avatar
hibr
Forum Members
Forum Members
Posts: 73
Joined: Fri Feb 08, 2008 11:22 pm

Re: Frontenduser logout

Post by hibr »

Vorschlag: Im Template oder der Seite kann man folgendes eingeben:

Code: Select all

{cms_module module=CustomContent}{* stellt u.a. die Variable $customcontent_loggedin zur Verfügung *}
{if $customcontent_loggedin}
   {* hier Link zur Seite mit dem Abmeldeformular eingeben *}
{/if}
Auf der Seite/Template mit dem Abmeldeformular sollte stehen:

Code: Select all

{cms_module module=FrontEndUsers form='logout'}
Bitte achte darauf, dass alle Seiten nicht gecached werden, sonst funktioniert es nicht. Das kann man auf jeder Seite im Reiter "Optionen" einstellen (Zwischenspeichern = [leer]).

Schau dir auf jeden Fall die Hilfe zu den Modulen FEU und CustomContent an.
Hanis Sammelsurium - How To's, Erfahrungs- und Meinungsberichte
NaN

Re: Frontenduser logout

Post by NaN »

Wenn Du das Abmelde-Template nicht wirklich verwendest (also kein Avatar etc.), kannst Du dort auch einfach nur das {$link_logout} reinschreiben und anstelle des Links zur Logout-Seite gleich {cms_module module=FrontEndUsers form='logout'} ins Seiten-Template schreiben.
TeXnik
Forum Members
Forum Members
Posts: 132
Joined: Thu Aug 07, 2008 12:45 pm

Re: Frontenduser logout

Post by TeXnik »

Danke das wars. In der Hilfe war das mit dem Form=´logout´nicht sofort zu erkennen.
JuFa
Forum Members
Forum Members
Posts: 13
Joined: Sun Nov 16, 2008 10:32 pm

Re: Frontenduser logout

Post by JuFa »

Hallo zusammen,

ich habe eine ähnliche Aufgabenstellung, bei der ich nicht weiterkomme *verzweifel*:  ???
Ich möchte gerne, dass sobald ein Frontend-User angemeldet ist, im Menü (nicht auf irgendeiner Content-Seite!) ein Logout-Menüpunkt zur Auswahl steht.

Zur Erklärung: Die Menüsteuerung habe ich bereits so weit, dass nach dem Login ein Mitgliederbereich samt Untermenüpunkten eingeblendet wird, der ansonsten unsichtbar ist (via FEU, CustomContent und pageAliasMatch-UDT). Mein Problem besteht also NICHT darin, angemeldeten Usern einen zusätzlichen Menüpunkt "Logout" einzublenden, sondern vielmehr darin, dass der User direkt durch einen Klick auf "Logout" (im Menü, also ohne Aufruf einer Logout-Seite im Content-Bereich!) wieder abgemeldet werden soll. Im Content-Bereich soll dann die Startseite aufgerufen werden.
(Den Login realisiere ich über einen Content-Block, der für angemeldete User ausgeblendet wird und durch den gesuchten Logout-Button ersetzt werden soll.)

Die Schwierigkeit besteht für mich darin, dass ich eine Seite mit einem Externen Link anlegen müsste, deren Externer Link jedoch abhängig ist vom angemeldeten User. Der Link müsste quasi dynamisch durch den Inhalt von {$link-logout} ersetzt werden. Wenn ich diesen Tag allerdings anstatt der externen URL eintrage, funzt das nicht.  :'(

Wer kann mir weiterhelfen?

Vielen herzlichen Dank im Voraus für eure Hilfe!  :)
JuFa

P.S.: Absolute Spitzenklasse wäre es, wenn mir auch noch jemand einen Tipp geben könnte, wie ich erreiche, dass dieser "Logout"-Menüpunkt (in meinem horizontalen Menü) ganz rechts am Bildschirm (also abgesetzt von den anderen) und evtl. noch andersfarbig angezeigt wird.
Last edited by JuFa on Mon Nov 17, 2008 12:16 am, edited 1 time in total.
NaN

Re: Frontenduser logout

Post by NaN »

Hallo JuFa.

Ich habe soetwas schonmal realisiert.
Dazu gibt es mehrere Möglichkeiten. (genau genommen kenne ich nur zwei ;) )
Ich versuche es mal so gut es geht zu erklären.
Allerdings ist es schon spät (oder früh) und der Wein und das Bier sind da evtl. auch hinderlich ;D
Also falls da doch Fehler und daraus resultierende Fragen sind, einfach nochmal fragen...

Variante 1:
Wenn Du das Logout-Template des FeUser Moduls nicht weiter verwendest, dann verwende dort den logout link.
JuFa wrote:
[...] {$link-logout} ersetzt werden. Wenn ich diesen Tag allerdings anstatt der externen URL eintrage, funzt das nicht.  :'(
{$link-logout} ist schonmal falsch. Erstens muss es {$link_logout} heißen und zweitens ist das kein Tag, sondern eine Variable, die nur im Logout-Template verfügbar ist.
Aber das nur so am Rande.

Ich erklärs am Besten mal anhand vom Quellcode.
Dein Menü wird im Template vermutlich so (oder so ähnlich) aufgerufen:

Code: Select all


<div id="menu"> 

     {menu ... usw.} 

<div>

Was dann im Browser zu

Code: Select all


<div id="menu"> 
     <ul>
          <li>
                 <a>...</a>
         </li>
          <li>
                 <a>...</a>
         </li>
         ...
     </ul>
<div>

mutiert.

Um zu erreichen, dass der Logout-Link genauso formatiert ist, wie die Menüpunkte, muss er also in eine Liste, die im Div mit der ID menu steht.
D.h. Du musst nach dem Menü-Aufruf im selben Div mit CustomContent prüfen, ob der User angemeldet ist.
Wenn ja, dann soll dort das FrontendUser Modul mit dem Logout-Template angezeigt werden:

Code: Select all


<div id="menu"> 

     {menu ... usw.} 

     {if $cutsomcontent_loggedin}
          {cms_module module="frontendusers" form="logout"}
     {/if}

<div>

Im Logout-Template des FrontendUsers Moduls musst Du dann nur den Logout-Link in einer Liste darstellen:

Code: Select all


<ul id="logout">
     <li>
          {$link_logout}
     </li>
</ul>

Somit erscheint der Logout-Link als regulärer Menüpunkt sobald ein User angemeldet ist.
Um diesen Link gesondert zu formatieren, kannst Du im Stylesheet auf die hier verwendete ID "logout" zugreifen und diese Liste z.B. mit float:right formatieren (hier ist der Punkt an dem ich gerade nicht mehr klar denken kann. kann sein, dass das evtl. doch nicht ganz so einfach ist).

Varriante 2 (weniger zu emfehlen):
Ein einfacher Inhalt vom Typ Link.
Schau Dir einfach mal den Quellcode im Browser des FeUsers Moduls für den Logout-Link an. Kopiere Dir die Addresse.
Erstelle einen neuen Inhalt vom Typ Link und füge dort die Addresse ein.
Das Problem hierbei ist, dass in dieser Addresse dynamisch generierte Variablen verwendet werden.
Diese Variablen sind abhängig davon an welcher Stelle das FeUsers Modul aufgerufen wurde.
Mit Hilfe dieser Variablen werden z.B. die Aktionen, die diese Module ausführen sollen eindeutig identifiziert und dem entsprechenden Modulaufruf zugeordnet. (es ist möglich ein und dasselbe Modul mehrmals im Template aufzurufen. Um die Aktionen dem jeweiligen Modulaufruf zuordnen zu können werden für jeden Modulaufruf IDs vergeben...)

Kurz: Wenn Du Dein Template / Content änderst und dort ein weiteres Modul einfügst, ist es möglich, dass das FrontendUsers Modul eine andere ID bekommt als im Logout-Link angegeben ist. Der Link wird zwar den Anschein haben, die Aktion (Logout) auszuführen, aber mit einem Klick auf den "Zurück-Button" des Browsers, ist man immer noch eingeloggt.
Funktioniert also nicht mehr richtig.
Daher weniger zu empfehlen.

(Auf die gleiche Weise könnte man auch zusammen mit dem CustomContent Modul einen einfachen Link irgendwo im Template platzieren.)

Ich hoffe das hilft Dir weiter.
Falls nicht, einfach nochmal fragen ;)
JuFa
Forum Members
Forum Members
Posts: 13
Joined: Sun Nov 16, 2008 10:32 pm

Re: Frontenduser logout

Post by JuFa »

Hallo NaN,

vieelen Dank schon mal, dass du dir überhaupt die Mühe gemacht hast, mir (noch dazu so ausführlich!) zu antworten. :)
Allerdings hatte ich in meiner Anfrage versucht darzustellen, dass es mir eben NICHT darum geht, einen Link ins Hauptmenu zu bekommen, der dann dafür sorgt, dass die Logout-Box im Content-Bereich erscheint. Das gelang mir schon.

Stattdessen finde ich ein Logout-Formular vollkommen überflüssig, wenn darin (im Endeffekt) eh nichts anderes enthalten ist, als ein Logout-Button. Stattdessen wollte ich im Hauptmenü einen Logout-Button haben. Also nochmal: ein Menüpunkt, der [glow=yellow,2,300]mit einem Klick[/glow] direkt und unmittelbar -- sozusagen ohne über LOS zu gehen  ;D -- zum Logout führt.

Ich hoffe, das war jetzt besser verständlich!?

Ganz liebe Grüße
JuFa
NaN

Re: Frontenduser logout

Post by NaN »

Offenbar hast Du meine Erklärungen falsch verstanden bzw. garnicht erst ausprobiert.
JuFa wrote:
Stattdessen finde ich ein Logout-Formular vollkommen überflüssig, wenn darin (im Endeffekt) eh nichts anderes enthalten ist, als ein Logout-Button. Stattdessen wollte ich im Hauptmenü einen Logout-Button haben. Also nochmal: ein Menüpunkt, der [glow=yellow,2,300]mit einem Klick[/glow] direkt und unmittelbar -- sozusagen ohne über LOS zu gehen  ;D -- zum Logout führt.
Es ist nicht überflüssig. Es ist nötig.
Denn nur so erhälst Du einen Link, der alle nötigen Parameter enthält um den User korrekt auszuloggen.
Woher soll denn das CMS sonst wissen welches Modul und welcher ModulAufruf dieses Moduls im Template jetzt diese Aktion ausführen soll.

Nochmal: Jeder ModulAufruf hat eine eigene ID. Wenn ich z.B. dreimal das NewsModul mit unterschiedlichen Parametern einbinde, dann sollen deren Ausgaben unabhängig voneinander funktionieren. Das geht nur, wenn in jedem Link des Newsmoduls der ausgeführt wird auch drinsteht, welches der drei NewsModule mir jetzt z.B. die Details anzeigen soll.
Diese ID bekommst Du nur über das jeweilige Modul.
D.h. das FrontendUserModul muss zum Anzeigen des Links ausgeführt werden, da sonst die ID im Link nicht stimmt.
Es muss den Link selber generieren.
NaN wrote:
[...]

Varante 1:

[...]

Somit erscheint der Logout-Link als regulärer Menüpunkt sobald ein User angemeldet ist.

[...]
Und dieser Link loggt Dich sofort aus. Da kommt dann kein Formular oder Logout-Seite mehr.
Dieser Menüpunkt IST schon das Logoutformular und führt die Aktion aus. Fertig.
Wohin Du nach dem Logout weitergeleitet wirst kannst Du im FrontendUsersModul einstellen.
Steht dort nichts, bleibst Du auf der aktuellen Seite.
Nur bist Du dann nicht mehr eingeloggt und alle mit CustomContent gefilterten Einträge verschwinden.

Ansonsten nimm Variante 2.
Kopiere Dir einfach die Addresse des Logoutlinks (also der der dich ausloggt) und erstelle den Link einfach selber.
Z.B. Irgendwo im Template.
Mit Hilfe von CustomContent kannst du ihn dann je nachdem ob ein User angemeldet ist oder nicht ein bzw. ausblenden.
Klickt man da drauf, ist man ausgeloggt. Keine Logoutseite. Nix.

Aber wie gesagt, mit Letzterem kannst Du Probleme bekommen sobald Du ein neues Modul einbindest, rausnimmst oder einfach nur die Reihenfolge im Template änderst, da dann evtl. die ID im Link nicht mehr mit der ID des FrontendUserModuls übereinstimmt.
Ergo, der Link führt zwar das Script zum Ausloggen aus, das Script kann Dich aber nicht ausloggen, da es kein "aktives" FrontendUserModul mit dieser ID gibt.

Ist das wirklich so schwer zu verstehen?
Last edited by NaN on Wed Nov 19, 2008 3:10 am, edited 1 time in total.
JuFa
Forum Members
Forum Members
Posts: 13
Joined: Sun Nov 16, 2008 10:32 pm

Re: Frontenduser logout

Post by JuFa »

Hallo NaN!

Vielen Dank für deine Geduld mit mir.  :) :) :)
Jetzt hab's auch ICH verstanden.
Hab's jetzt nach Version 1 gemacht. War -- von den Stylesheet-Formatierungen abgesehen -- keine große Affäre.

Vielen Dank nochmal und GLG
JuFa
NaN

Re: Frontenduser logout

Post by NaN »

NaN wrote:
Ist das wirklich so schwer zu verstehen?
Die Frage war übrigens nicht böse, sondern ernst gemeint.
Hab das Gefühl, dass ich manchmal etwas zu tief in der Materie drin stecke um es auch für Außenstehende verständlich zu formulieren.
Da ich das mit den IDs irgendwo schonmal erläutert hatte, habe ich hier jetzt fälschlicherweise Dinge vorrausgesetzt, die in diesem Thema noch garnicht zur Sprache kamen.
Also sorry, falls das etwas "genervt" rüberkam.
JuFa
Forum Members
Forum Members
Posts: 13
Joined: Sun Nov 16, 2008 10:32 pm

Re: Frontenduser logout

Post by JuFa »

... es kam tatsächlich etwas genervt 'rüber.  :)
Ich hatte dafür aber sogar Verständnis. Ich hätte ja tatsächlich nur genauer lesen müssen, hatte es aber so verstanden, dass dein Vorschlag einen Menü-Link auf einen Content-Seit mit Logout-Formular erzeugen würde (,was ich ja schon hatte, aber nicht wollte).

Ist also absolut okay! :) Entschuldigung trotzdem gerne angenommen!  :D

"Hier werden Sie geholfen!" Vielen Dank nochmal!
JuFa
Post Reply

Return to “Module und Tags”