sr_feuser_register mit zusätzlichen Feldern

Eingetragen von am Mittwoch, 03.02.2010 | TYPO3 Technik

Zusätzliche Felder zum Front-End Benutzer Registrierungsmodul von sr_feuser_register hinzuzufügen ist eigentlich nicht schwer. Jedoch gibt es auch hier wie so oft einige Fallstricke zu beachten.

Die FE-User Tabelle erweitern

Zunächst müssen die zusätzlichen Felder in der Front-End Benutzertabelle erzeugt werden. Hierzu kann einfach mit dem Kickstarter eine Extension erstellt werden, die der Tabelle fe_users weitere Felder hinzufügt.

Die Marker im Template von sr_feuser_register anlegen

So man das noch nicht getan hat, das Template der Front-End Registrierung kopieren und im Fileadmin ablegen. Dann in den TypoScript Konstanten das Template eintragen:

plugin.tx_srfeuserregister_pi1 {
file.templateFile = fileadmin/template/html/srfeuserregister.html
}

In diesem Template nun die Marker für die zusätzlichen Marker hinzufügen.

Marker für einfache Textfelder anlegen:

<!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->
<dt>
<label for="tx-srfeuserregister-pi1-myNewFieldName">###LABEL_MYNEWFIELDNAME###</label>
<span>###REQUIRED_MYNEWFIELDNAME###</span>
</dt>
<dd>
<!-- ###SUB_ERROR_FIELD_myNewFieldName### -->
<p>###EVAL_ERROR_FIELD_myNewFieldName###</p>
<!-- ###SUB_ERROR_FIELD_myNewFieldName### -->
<!-- ###SUB_REQUIRED_FIELD_myNewFieldName### -->
<p>###MISSING_MYNEWFIELDNAME###</p>
<!-- ###SUB_REQUIRED_FIELD_myNewFieldName### -->
<input id="tx-srfeuserregister-pi1-myNewFieldName" type="text" size="40" maxlength="50" title="###TOOLTIP_MYNEWFIELDNAME###" name="###NAME_MYNEWFIELDNAME###" />
</dd>
<!-- ###SUB_INCLUDED_FIELD_myNewFieldName### -->

Dabei myNewFieldName durch den gesammten Feldnamen ersetzen.

sr_feuser_register Radiobuttons, Checkboxen, Auswahlfelder und Textbereiche hinzufügen

Besonders komfortabel wird das hinzufügen von neuen Feldern zur Front-End Registrierung aus der Tatsache, dass die Extension automatisch die TCA Konfiguration des Feldes ausliest und daraus automatisch ein entsprechendes Feld (zum Beispiel Auswahlfeld o.ä.) generiert. Dafür im obigen Beispiel statt dem inputtag nur einen solchen Marker hinzufügen:

###TCA_INPUT_myNewFieldName###

Jedoch wird dieser Marker nur ersetzt, wenn auch die TCA Konfiguration des entsprechenden Feldes gefunden wurde. Dazu mehr im entsprechenden Abschnitt.

Leider ist es nicht möglich, Select Felder in Zusammenhang mit “itemsProcFunc” zu nutzen.

Die Felder im TypoScript (Konstanten) freischalten

Auch wenn die zusätzlichen Felder zur Registrierung bereits im Template eingetragen wurden, werden diese nur angezeigt, wenn sie auch per TypoScript Konstanten freigeschaltet wurden:

plugin.tx_srfeuserregister_pi1.formFields = username,password,gender,password_repeat, ...

Pflichtfelder müssen in folgende Liste eingetragen werden:

plugin.tx_srfeuserregister_pi1.requiredFields = username,password, ...

Der Name des Feldes ist immer identisch mit dem Namen des entsprechenden Feldes in der Datenbanktabelle fe_users.

Label und Fehlertexte lokalisiert hinzufügen

Wie bereits bei der Eintragung ins Template zu erkennen war, können alle Label und Texte für den Fehlerfall lokalisiert eingegeben werden. Dazu einfach folgendes zum TypoScript Setup hinzufügen:

plugin.tx_srfeuserregister_pi1._LOCAL_LANG.de.myNewFieldName = Mein Feld eingeben:

Fehlernachricht bei unausgefüllten Pflichtfeldern:

plugin.tx_srfeuserregister_pi1._LOCAL_LANG.de.missing_myNewFieldName = Bitte geben Sie etwas ein!

Dasselbe aber für die Einladungsmaske:

plugin.tx_srfeuserregister_pi1._LOCAL_LANG.languageCode.missing_invitation_ myNewFieldName = Bitte auch hier was eingeben

Fehlermeldung, wenn das Feld falsch ausgefüllt wurde:

plugin.tx_srfeuserregister_pi1._LOCAL_LANG.languageCode.evalErrors_evalRuleName_myNewFieldName = Darf nur Buchstaben und Zahlen enthalten!

Die TCA-Konfiguration zur Verfügung stellen

In früheren Versionen der Extension sr_feuser_register wurde pauschal die gesamte TCA des Projektes eingelesen und ausgewertet. Dies stellte sich jedoch als zu ressourcenfressend heraus. Daher müssen Extensions, deren Felder in sr_feuser_register genutzt werden sollen, nun über einen Hook registriert werden. Dazu folgenden Code der ext_localconf.php der Extension, die die neuen Felder enthält, hinzufügen:

if (TYPO3_MODE==’FE’){
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['sr_feuser_register']['extendingTCA'][] = ‘my_new_ext’;
}

Kann oder möchte man die andere Extension nicht verändern oder bleibt bei älteren Konstellationen der Hook wirkungslos, so kann man auch mit einem direkten Hack der Extension sr_feuser_register die TCA zur Verfügung stellen. Achtung, diese Änderung geht bei einem späteren Update verloren und muss daher gut dokumentiert werden!

In der Datei typo3conf/ext/sr_feuser_register/lib/class.tx_srfeuserregister_tca.php in der Funktion “init” hinter dem Code, der direkt Mail behandelt folgendes einfügen:

if (t3lib_extMgm::isLoaded('my_new_ext'))    {
tx_div2007_alpha::loadTcaAdditions_fh001(array('my_new_ext'));
}

Nun wird das TCA in jedem Fall geladen. Andernfalls kann der ärgerliche Fall eintreten, das bei der Front-End Nutzerregistrierung die Marker der Felder nur dann ersetzt werden, während man als Nutzer im Backend angemeldet ist, da nur in dem Fall das ganze TCA geladen wird.

8 Kommentare bisher

8 Antworten zu “sr_feuser_register mit zusätzlichen Feldern”

  1. AndyB. am Mittwoch, 21.07.2010 um 9:24 Uhr

    Hi Lina!

    Danke für deinen Beitrag. Soweit bin ich jetzt auch schon gekommen. Allerdings habe ich das Problem, dass die zusätzlichen Fleder im BE nur unter dem DirectMail abgezeigt werden und nicht unter ‘Personal Data’.
    Hast du eine Ahnung wie man das ändern kann?

    lg
    AndyB.

  2. Jonathan am Dienstag, 24.08.2010 um 10:15 Uhr

    Das ist teil der TCA konfiguration in der ext_tables.php. Dort findest du den schlüssel!

  3. Weasel am Montag, 27.09.2010 um 19:47 Uhr

    Hallo Andy,

    das kannst du in der ext_tables.php ganz unten hinzufügen und zwar

    wenn du nach dem hier

    t3lib_extMgm::addToAllTCAtypes(“fe_users”,

    das hier

    –div–;Main Tab,

    einfügst bevor die ganzen felder aufgelistet werden.

    lg

  4. Mo am Mittwoch, 27.10.2010 um 14:24 Uhr

    Hallo Lina,

    erst einmal Danke für das Tutorial.
    Ein kleines Problem hab ich allerdings, ich wollte eine Checkbox für “Terms and Conditions” integrieren, bekomme aber in meinem Formular jetzt nur die Marker (##LABEL_termsandconditions### ###REQUIRED_termsandconditions### ###MISSING_termsandconditions### ###TCA_INPUT_termsandconditions###) angezeigt aber keine Checkbox. Könntest Du mir verraten, woran das liegen könnte? Gerne auch für Dummies (hab noch nicht viel Ahnung von Typo3 ^^)

    Beste Grüße & einen schönen Tag,
    Mo

  5. Helge Farr am Donnerstag, 30.12.2010 um 15:41 Uhr

    Hallo,

    ich habe die Ext: sr_feuserregister um einige Felder erweitert. Bisher völlig problemlos.

    Nun habe ich 2 weitere Felder (Datumsfelder) hinzugefügt. Die Anzeige und das Preview funktionieren einwandfrei. Beim endgültigen Abspeichern jedoch, werden nur Zahlen akzepiert. Keine Trennstriche u. keine Punkte etc.

    das gewählte Datumsformat: TT-MM-JJJJ

    Was ist die Ursache bzw. wie kann dies behoben werden?

    Beste Grüße und im Voraus vielen Dank

  6. Frank am Donnerstag, 09.06.2011 um 12:07 Uhr

    Hallo,

    ich habe auch das Problem, dass bei mir die neuen Felder unter DirectMail angezeigt werden. Ich habe in der ext_tables.php das folgendermaßen geändert:

    t3lib_extMgm::addToAllTCATypes(‘fe_users’,'–div–;Main Tab,tx_lieferantenauskunft_abteilung;;;;1-1-1′);

    Hat nicht funktioniert. Auch

    t3lib_extMgm::addToAllTCATypes(‘fe_users’,'–div–;Main Tab,tx_lieferantenauskunft_abteilung,Direct mail,module_sys_dmail_html;;;;1-1-1′);

    führte nicht zum gewünschten Ergebnis.
    Was mache ich bloß falsch?

    Danke für die Hilfe

  7. Isabelle Diez am Freitag, 21.10.2011 um 15:51 Uhr

    hallo frank

    habe das gleiche problem. hast du es lösen können?

    lg
    isa

  8. Jürgen Maier am Dienstag, 06.12.2011 um 17:03 Uhr

    Hallo an alle,

    Gibts zu dem Problem von Frank schon ne Lösung?

    und hätte noch ne Frage,
    es funktioniert eigentlich alles, aber leider nur, wenn ich eingeloggt bin.
    Wenn ich nicht eingeloggt bin, sehe ich bei der Registrierung nur den Marker.
    Was hab ich denn falsch gemacht?

    Grüße
    Jürgen

Trackback URI | Comments RSS

Hinterlasse eine Antwort

Schlagworte: , , ,