expertinnen-web.de

Das Expertinnen-Web

TYPO3 Login-Formular im Template einbauen und gestalten

| 19 Kommentare

Das Login-Formular von TYPO3 ist – auch in der Version, die ccs_styled_content erstellt, ein übler Tabellenverhau, den man sich schenken kann. besonders, wenn man das Login-Formular über ein Template einbinden und so auf jeder Seite verfügbar haben will, wirkt sich das störend aus: Was, wenn die Felder neben einander in einer schmalen Leiste eingebunden sein sollen? Oder in einem Randstreifen, etwa unterhalb der Navigation?

Login-Formular einbinden – quick and dirty

Es gibt eine Quick-and-Dirty-Methode: Einfach das Formular in der Template-Datei (z.B. meintemplate.htm) hart codieren:

  1. <form action=”20.0.html” method=”post” name=”login” enctype=”multipart/form-data”>Mein Login<br />
  2. <input type=”hidden” name=”logintype” value=”login”>
  3. <input type=”hidden” name=”pid” value=”15″ />
  4. Mitglied: <input type=”text” name=”user”>
  5. Passwort: <input type=”password” name=”pass”>
  6. <input type=”submit” name=”submit” value=”Login” class=”submit”>
  7. </form>

Form action verweist auf die Seite, zu der man nach  dem Login springen möchte, also die erste Seite des passwortgeschützten Bereichs. Das hidden field “pid” nennt den Sysordner mit den Zugangsdaten der Frontend-User.

Sieht gut aus, erreicht maximale Gestaltungsmöglichkeiten, denn ich kann den Submit-Button mit einer Klasse versehen (class =”submit”) und separat von den Input-Feldern formatieren (z.B. weniger breit und mit Rahmen). Der Nachteil: So greifen wir nicht auf die erweiterten Funktionen des Login-Formulars zu, also z.B. die Überprüfung der Eingabe (wenn das Pflichtfeld “user” leer blieb) und die Ausgabe eines anderen Buttons “Logout”, wenn man sich eingelogged hat. Hier kommt die umständlichere, dafür aber funktionstüchtige Variante:

Login-Formular per Typoscript

Dafür überschreiben wir im Setup des Templates einige Werte, leeren ein paar andere, die überflüssig sind, und formatieren unsere Werte dann per CSS. Nicht vergessen: Hinterher noch auf einen Marker im Template legen, damit man das Formular auch angezeigt bekommt (page.10.marks.LOGIN < tt_content.login.20).

  1. #Login formatieren
  2. tt_content.login.20.hiddenFields.pid.value = 15
  3. tt_content.login.20.redirect = 20
  4. tt_content.login.20.stdWrap.wrap = Mein Login<br />
  5. tt_content.login.20.layout = ###LABEL### ###FIELD###
  6. tt_content.login.20.labelWrap.wrap =
  7. tt_content.login.20.dataArray.10.label.data >
  8. tt_content.login.20.dataArray.20.label.data >
  9. tt_content.login.20.dataArray.10.label = Mitglied
  10. tt_content.login.20.dataArray.20.label = Passwort
  11. tt_content.login.20.commentWrap.wrap =
  12. tt_content.login.20.REQ.labelWrap.wrap =
  13. tt_content.login.20.COMMENT >
  14. tt_content.login.20.COMMENT.layout = <span></span>
  15. tt_content.login.20.badMess = Pflichtfelder ausfüllen:
  16. tt_content.login.20.image = file
  17. tt_content.login.20.image.file = fileadmin/Admin/Login.gif
  18. [loginUser = *]
  19. tt_content.login.20.image = file
  20. tt_content.login.20.image.file = fileadmin/Admin/Logout.gif
  21. [GLOBAL]

Zeile 2: Angabe de Sysordners mit den FE-User-Daten
Zeile 3: Angabe der Zielseite (Homepage des passwortgeschützten Bereichs)
Zeile 4: Wrap aller Inhalte innerhalb des Formulars (hier für eine Überschrift genutzt)
Zeile 5: Layout von Feldbezeichnung und Feld (hier nur neben einander, kann per CSS mit input {disply:block} unter einander gestellt werden
Zeile 6: entfernt die innere Formatierung um die Feldbeschriftung
Zeile 7-10: entfernen die englische Beschriftung der beiden Felder und ersetzen sie durch eine Beschriftung unserer Wahl. Achtung, 7-8 sind nötig, sonst funktionieren 9-10 nicht. Überschreiben allein reicht nicht.
Zeile 11-12: entfernen Wraps für Kommentare (Hinweise nach dem Login) und Pflichtfeld-Beschriftungen
Zeile 13-14: Ich brauchte keine Information, die nach dem Login erscheint (Username und ein leeres Feld für Passwort). Auch hier reicht das Leeren nicht, ich habe es mit einem einfachen <span></span> überschrieben.
Zeile 15: Meldung, die erscheint, wenn man die Felder nicht ausfüllt.

Man kann auch noch mehr Werte überschreiben oder leeren. Grundsätzlich sind alle Elemente in eine Tabellenzelle gepackt, Labels noch einmal mit einem Absatz umgeben, der z.B. eine getrennte Formatierung von Beschriftungen für Pflichtfelder  gegenüber anderen Feldern erlaubt. Meist braucht man aber nur ein Minimum an Optionen und kann sich so viel Code vom Hals schaffen. Ein Überblick über die default-Einstellungen der Loginbox tt_content.login findet sich – so man das statische Template eingebunden hat – im Template Analyzer EXT:css_styled_content/static ab Zeile 761, sonst natürlich im TSOB.

Submit-Button als Grafik ausgeben

Leider erlaubt der Einbau des Login-Formulars nicht, den Submit-Button eigenständig zu wrappen oder ihm eine Klasse zuzuweisen. Eine separate Formaterung mit CSS fällt damit flach. Man kann den Button aber durch eine Grafik ersetzen:

Zeile 16-21: tt_content.login.20.image ruft die Grafik auf, die man dem Submit-Button zuweist. Da wir für den Logout-Button eine andere Grafik brauchen, binden wir sie mit Conditions (Zeile 18-21) ein. Die Grafik Logout.gif wird nur angezeigt, wenn der User sich eingelogged hatte.

Autor: Susanna

Seit 12 Jahren berate ich Unternehmen auf ihrem Weg ins Internet. Ziel ist eine Website, die den Kunden wie ein aktiver Mitarbeiter unterstützt. Mein persönlicher Schwerpunkt liegt auf den Content Management Systemen und ihrer Programmierung. Diese CMS sind meine Baustelle: TYPO3, Drupal, Wordpress und Joomla.

19 Kommentare

  1. Leider wird auf diese Weise eine Loginbox erzeugt, die insbesondere das Passwort *unverschlüsselt* überträgt. Wie lässt sich erreichen, dass die FORM action https verwendet?

  2. Hab hier noch ein andere Anleitung gefunden:
    http://www.philipphauer.de/tut/typo3-login-template/

    Ist anders als diese hier, aber läuft auch super!

    mfg
    Saenger

  3. hi, habe eine sache mit der newloginbox, wo ich noh nix brauchbares gefunden habe. bei mir ist es so das der user nach login wieder auf die seite kommt, von der er sich eingeloggt hat. das funktioniert auch super, aber wenn man dann f5 drückt, um zu aktualisieren, kommt diese browsermeldung “um diese seite anzuzeigen, müssen die von firefox gesendeten daten erneut gesendet werden…”. das würde ich nun gerne wegbekommen, da es ja durchaus vorkommen kann, das man nah login mal refresht und so eine meldung irritiert dann ja irgendwo… hat da jemand ne idee womit das zusammenhängen könnte?

    beste grüße, jonas

  4. hallo nochmal,

    hab noch ein weiteres problem möchte für den login und logout button auch gerne eine roll-over grafik festlegen.
    wie geht denn sowas.

    danke

    lg
    zahn

  5. hallo

    hab auch den typoscript code eingebunden und das funktioniert auch soweit.
    jedoch wie kann ich das ganze mit css formatieren, denn ich weiß nicht wie ich die einzelnen elemente ansprechen kann, also do input felder und deren description.
    sehe ich mir das ganze im firebug an ist die description nicht einmal ein -tag oder so und alle anderen sind nur input forms.

    wie kann ich die einzelnen elemente mit css ansprechen, damit ich auch wirklich ein individuelles design erziele???

    danke

    lg
    zahn

  6. Ich habe den Vorschlag im Setup eingebunden. Wenn ich nun im Object Browser nachschaue, sind die Daten auch so wie im Typoscript angegeben hinterlegt. Beim Seitenaufruf habe ich allerdings noch die ursprünglichen Einträge im Template, sprich Tabelle, englische Beschriftung usw. Was mach ich falsch??
    Die Eibindung des Login-Formulars funktioniert doch über den Marker. Das Login funktioniert soweit auch der Zugriff auf den SysOrdner und die Benutzerdaten klappt einwandfrei?!
    Danke für euere Hilfe.

  7. Ich hab hier mal nen Prob zum Login, wozu ich bis jetzt noch keinen Beitrag gefunden habe…

    Ich habe den Login soweit konfiguriert pid für den SysFolder angegeben usw…

    Wenn ich mich jetzt versuche im Frontend unter einem Usernamen anzumelden, wird nur das login-Formular angezeigt.

    Das gleiche passiert auch wenn ich mich nicht korrekt unter einem existierendem Benutzer anmelde…

    Ich weiß echt nicht mehr weiter!

  8. Moin moin!

    Ich hab hier mal nen Prob zum Login, wozu ich bis jetzt noch keinen Beitrag gefunden habe…

    Ich habe den Login soweit konfiguriert pid für den SysFolder angegeben usw…

    Wenn ich mich jetzt versuche im Frontend unter einem falschen Passwort bzw. Usernamen anzumelden, werde ich trozdem in der URL auf die korrekte uid=… weitergeleitet.
    Aber der Inhalt der Zielseite wird nicht angezeigt, sondern das login-Formular.
    Das gleiche passiert auch wenn ich mich korrekt unter einem existierendem Benutzer anmelde…

    Ich weiß echt nicht mehr weiter!

  9. Ein Marker ist ein Platzhalter in einem HTML-Template, in das Du dann per Typoscript etwas hineinschiebst, z.B. die Navigation oder das Login-Formular. Im Klartext:

    In deinem HTML-Template steht

    ###LOGIN###

    Im Setup für das Template steht:
    page.10.marks.LOGIN < tt_content.login.20

  10. Hallo, bin auch ein T3 newcommer, und habe nicht den Blassesten wo ich den obigen Quelltext einbauen muss, damit ich was angezeigt bekomme.
    Was ist ein Marker ? Wie muss der aussehen ?

    Über Hilfe würde ich mich ganz arg freuen !

    Grüsse

    hasi

  11. hi leute, ich bin ein übelster anfänger, und brauche glaube ich echt eure hilfe.

    Ich möchte das mit dem log in auch benutzen, habe mir auch das erweiterte login formular importiert, bekomme es aber nicht ans laufen, habe einen User SysFolder gebastelt, und dadrinnen die User sowie die Usergroups. rechte alles so vergeben wie man es in den Typo3 Dokumentation videos findet, aber es läuft nicht!!! :( bin schon total verzweifelt.

    vieleicht kann mir jemand helfen.

    auf der Testseite von Typo3 (Quickstart Version 4.1.1) läuft der log in, und da kann ich auch mit den rechten herumspielen und so.

    habe ich den SysFolder an der Falschen Stelle platziert? habe ich es nicht zugewiesen von wo der SysFolder ist?

    über eine email würde ich mich RIESIG Freuen.

    mfg
    gabriel

  12. sorry hat noch etwas gefehlt

    tt_content.login.10 = TEXT
    LOGIN
    tt_content.login.10.layout = ###LABEL### ###FIELD###
    tt_content.login.10.labelWrap.wrap =
    tt_content.login.10.dataArray.10.label.data >
    tt_content.login.10.dataArray.20.label.data >
    tt_content.login.10.dataArray.10.label = Mitglied
    tt_content.login.10.dataArray.20.label = Passwort
    tt_content.login.10.commentWrap.wrap =
    tt_content.login.10.REQ.labelWrap.wrap =
    tt_content.login.10.COMMENT >
    tt_content.login.10.COMMENT.layout =
    tt_content.login.10.badMess = Pflichtfelder ausfüllen:
    tt_content.login.10.image = file
    tt_content.login.10.image.file = fileadmin/Admin/Login.gif
    [loginUser = *]
    tt_content.login.10.image = file
    tt_content.login.10.image.file = fileadmin/Admin/Logout.gif
    [GLOBAL]
    }

  13. hi ich habe versucht den login code in mein typo3 einzubinden es geht leider net :-( . bin leider nicht so der profi ist bestimmt nur ein kleiner fehler oder?

    hier mein code

    tt_content.login.10 = TEXT
    LOGIN
    tt_content.login.10.layout = ###LABEL### ###FIELD###
    tt_content.login.10.labelWrap.wrap =
    tt_content.login.10.dataArray.10.label.data >
    tt_content.login.10.dataArray.20.label.data >
    tt_content.login.10.dataArray.10.label = Mitglied
    tt_content.login.10.dataArray.20.label = Passwort
    tt_content.login.10.commentWrap.wrap =
    tt_content.login.10.REQ.labelWrap.wrap =
    tt_content.login.10.COMMENT >
    tt_content.login.10.COMMENT.layout =
    tt_content.login.10.badMess = Pflichtfelder ausfüllen:
    tt_content.login.10.image = file
    tt_content.login.10.image.file = fileadmin/Admin/Login.gif
    [loginUser = *]
    tt_content.login.10.image = file
    tt_content.login.10.image.file = fileadmin/Admin/Logout.gif
    [GLOBAL]
    }

  14. so kann man die tabelle um das formular entfernen:

    tt_content.login.20.stdWrap >

    der beitrag oben war sehr hilfreich, danke.

    gruß
    stoerte :)

  15. Danke!

    Ich hatte Probleme, in meiner Typo3 Seite ein Formular anzuzeigen – Keine Ahnung warum. Mit Hilfe Eures Tuts ist es mir nun doch gelungen.

    Ich habe einen Link auf Euer Tut gesetzt, weil es richtig gut ist.

    Grüße…

  16. Leider kann ich nicht verfolgen, wieso die Tabelle nicht verschwindet. Mit tt_content.login.20.stdWrap.wrap = müßte z.B. die table-Definition geleert werden. Läßt sich wie gesagt im TSOB gut nachvollziehen und einstellen.

    Styles für Label, Input usw: Ein schönes Tutorial für ccs-gestylte Formulare gibt es hier: http://www.css-tutorials.de/css/barrierefreiesformular/
    und hier:
    http://webstandard.kulando.de/post/2006/07/24/layout_fur_formulare

  17. Hallo,

    Ich stehe kurz vor der Finalisierung meinem ersten Typo3 Projekt … nur diese eine Sache mit der Login Box fehlt noch.
    Ich habe die Anleitung zu erstellen der TS LoginBox befolgt. Leider bin ich die lästige Tabelle nicht los und verstehe nicht wie man den input Feldern (Label + Field) CSS zuweisen kann.
    Vielleicht können Sie mir weiter helfen.
    Vielen Dank
    Andreas

  18. Noch einfacher geht das Zuweisen einer CSS-Klasse über TypoScript:

    tt_content.login.20.params.submit = class=”submit”

  19. Das klappt auch ohne Grafik …

    Du musst im Typo Script Object Browser einfach auf der Ebene “tt_content/login/FORM” den Wert “params.submit” anlegen und diesen mit z.b. class=”submit” füllen.

    easy man ;)

Hinterlasse eine Antwort

Pflichtfelder sind mit * markiert.

*