sr_feuser_register mit zusätzlichen Feldern

Eingetragen von Lina 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.

Share and Enjoy:
  • Facebook
  • Digg
  • del.icio.us
  • Google Bookmarks
  • MisterWong

1 Kommentar bisher

Eine Antwort 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.

Trackback URI | Comments RSS

Hinterlasse eine Antwort

Schlagworte: , , ,