sr_feuser_register mit zusätzlichen Feldern

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.

Veröffentlicht unter TYPO3 Technik
11 Kommentare auf “sr_feuser_register mit zusätzlichen Feldern
  1. AndyB. sagt:

    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 sagt:

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

  3. Weasel sagt:

    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 sagt:

    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 sagt:

    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 sagt:

    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 sagt:

    hallo frank

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

    lg
    isa

  8. Jürgen Maier sagt:

    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

  9. Marcel sagt:

    Hallo zusammen,

    ich hab die Anleitung oben befolgt, um ein neues Feld bei der Benutzerregistrierung hinzuzufügen (placeofbirth). Doch das funktioniert leider nicht richtig. Egal ob bei „plugin.tx_srfeuserregister_pi1.formFields“ mein Feld hinzufüge, oder nicht, wird der Teil aus dem Template immer angezeigt.

    Das einzige was ersetzt wird ist „###EVAL_ERROR_FIELD_myNewFieldName###“, ansonsten werden alle Marker wie ###LABEL_PLACEOFBIRTH###,###REQUIRED_placeofbirth###
    ###MISSING_PLACEOFBIRH### direkt ausgegeben, also nicht ersetzt.

    Ich verwende sr_feuser_register 2.6.3 und div2007 0.8.1

    Gibt es ähnliche Probleme? Woran könnte es liegen?

    Viele Grüße und danke für die Hilfe

    Marcel

  10. Janine sagt:

    Hi,

    if(t3lib_extMgm::isLoaded(’sr_feuser_registration‘) && TYPO3_MODE==’FE‘ ){
    $GLOBALS[‚TYPO3_CONF_VARS‘][‚EXTCONF‘][’sr_feuser_register‘][‚extendingTCA‘][] = ‚tx_tmowexml_ObjectCode‘;
    }

    Ist das nicht noch besser?

    LG
    Janine

  11. Ronald sagt:

    Gibt es eigentlich hierzu schon eine Lösung bezüglich dynamisch zu befühlender Select-Boxen? Wäre da für jede Hilfe dankbar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*