Skip to main content

Die Frontend-Benutzerregistrierung um eigene Felder erweitern

Das neue Feld soll eine Selectbox für die Branchenauswahl  im Registrierungsformular sein.

Extension im Kickstarter anlegen 

Erstellen Sie mit dem Kickstarter eine Extension, vergeben Sie einen Extensionkey. In diesem Beispiel ist das sr_feuser_extrafield_industry. füllen Sie die Felder bei General /Infos aus und wählen Sie bei Setup Languages die gewünschten Sprachen aus.

Mit Extend existing tables und der Auswahl fe_users erweitern Sie die Tabelle fe_users der Frontendbenutzerregistrierung um das gewünschte Feld. Definieren Sie das Feld, in diesem Beispiel industry und benennen  Sie es auf Englisch mit industry, auf Deutsch mit Branche. Da es sich um eine Auswahlbox handeln soll, wählen Sie als Feldtyp Selectbox aus.  Definieren Sie nun, wie viele Auswahlmöglichkeiten Sie haben möchten und benennen die Auswahl mit einem Platzhalter für die Sprachen. Zum Beispiel industry1, Industry2... und für die deutsche Sprache mit Branche1, Branche2 und so weiter. Klicken Sie auf  Update und anschließend auf  View Results.

Extension installieren 

Installieren Sie die Extenison und vergewissern Sie sich,  in der Tabelle fe_users, dass das entsprechende Feld hinzugefügt wurde (phpmyadmin).

HTMl Template bearbeiten

Im nächsten Schritt bearbeiten Sie das aktuelle Template der Benutzerregistrierung in Ihrem Template-Order im Fileadminverzeichnis, nicht in der Extension der Benutzerregistrierung selbst. Das ist nicht ganz unaufwendig, denn das HTML-Template ist umfangreich.

Laden Sie das Template, in einen Editor und erstellen zunächst eine Sicherheitskopie.. Suchen Sie die Stelle <!-- ###SUB_INCLUDED_FIELD_company### --> und kopieren Sie den gesamten Subpart direkt dahinter ein. Bitte beachten Sie, dass aufgrund des zur Verfügung stehenden Platzes in den Codebeispielen Umbrüche stehen, die Sie im Template nicht nutzen sollten.           

<!-- ###SUB_INCLUDED_FIELD_company### -->
 <dt>
 <label for="tx-srfeuserregister-pi1-company">
 ###LABEL_COMPANY### ###REQUIRED_COMPANY###</label>
 </dt>
 <dd>
 <!-- ###SUB_ERROR_FIELD_company### -->
 <p>###EVAL_ERROR_FIELD_company###</p>
 <!-- ###SUB_ERROR_FIELD_company### -->
 <!-- ###SUB_REQUIRED_FIELD_company### -->
 <p>###MISSING_COMPANY###</p>
 <!-- ###SUB_REQUIRED_FIELD_company### -->
 <input id="tx-srfeuserregister-pi1-company" 
 type="text" size="40" maxlength="50" 
 title="###TOOLTIP_COMPANY###" 
 name="###NAME_COMPANY###" />
 </dd>
<!-- ###SUB_INCLUDED_FIELD_company### -->

Bei dem Feld Company handelt es sich um ein einfaches Eingabefeld. Das neue Feld soll jedoch eine Auswahlbox sein. Diese Zeile, die das Inputfeld definiert (<input id=""..>), muss nun durch den TCA-Marker, wie im Codebeispiel unten, ersetzt werden und dieser Marker platziert werden '###TCA_INPUT_tx_srfeuserextrafieldindustry_industry###.

<!-- ###SUB_INCLUDED_FIELD_tx_srfeuserextrafieldindustry_
industry### --> 
 <dt> 
 <label for="tx-srfeuserregister-pi1-industry">
 ###LABEL_TX_SRFEUSEREXTRAFIELDINDUSTRY_INDUSTRY### 
 ###REQUIRED_TX_SRFEUSEREXTRAFIELDINDUSTRY_INDUSTRY###
 </label>
 </dt>
 <dd>
 <!-- ###SUB_ERROR_FIELD_tx_srfeuserextrafieldindustry
 _industry### -->
 <p>###EVAL_ERROR_FIELD_tx_srfeuserextrafieldindustry
 _industry###</p>
 <!-- ###SUB_ERROR_FIELD_tx_srfeuserextrafieldindustry
 _industry### -->
 <!-- ###SUB_REQUIRED_FIELD_tx_srfeuserextrafieldindustry
 _industry### -->                         
 <p>###MISSING_TX_SRFEUSEREXTRAFIELDINDUSTRY
 _INDUSTRY###</p>
 <!-- ###SUB_REQUIRED_FIELD_tx_srfeuserextrafieldindustry
 _industry### -->
 ###TCA_INPUT_tx_srfeuserextrafieldindustry_industry###
 </dd>              
<!-- ###SUB_INCLUDED_FIELD_tx_srfeuserextrafieldindustry
_industry### -->

Suchen Sie im HTML Template alle Stellen, die Company definieren, kopieren Sie den Subpart und ändern die Werte entsprechend. Achten Sie darauf, dass eventuell im Extensionkey vorkommende Unterstriche entfernt werden. Wie das Feld heißt, sehen Sie genau in der Tabelle fe_users. Un diesem Beispiel ist der Feldname also tx_srfeuserextrafieldindustry_industry.

Datei ext_localconf.php erstellen 

Im nächsten Schritt fügen Sie der Extension, die Sie im Kickstarter erstellt haben, einen Hook hinzu. Das benötigen Sie nur, wenn wie im Beispiel , ein TCA-Feld verwendet werden soll. Für normale Input-Felder ist das nicht notwendig. Dazu müssen sie zunächst die Extension um die Datei  ext_localconf.php erweitern.

Im Extensionverzeichnis typo3conf/ext finden Sie Ihre im Kickstarter erstellte Extension.

In einem Editor legen Sie die Datei an und fügen folgenden code ein, damit die Benutzerregistrierung auf dieses TCA -Feld zugreifen kann.

Das wird benötigt, damit nicht mehr alle ext_tables.php und tca.php aus allen Extensions geladen werden müssen. Diese Information teilt sr_feuser_register mit, welche $TCA er für die fe_users zusätzlich laden muss. Der letzte Teil definiert die im Kickstarter angegebene Extension.

<?php
if (TYPO3_MODE=='FE') {
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']
 ['sr_feuser_register']['extendingTCA'][] 
= 'sr_feuser_extrafield_industry';
} 
?>

TypoScript Template - Felder zuweisen 

In Ihrem TS-Template müssen Sie nun noch das entsprechende Feld zuweisen.

Zunächst in den constants wie folgt:

plugin.tx_srfeuserregister_pi1.formFields = tx_srfeuserextrafieldindustry_industry,image, username

Und im Setup bei create.fields und edit.fields.

Sofern das Feld ein Pflichtfeld sein soll, muss es sowohl in den Constants bei plugin.tx_srfeuserregister_pi1.requiredFields, als auch im Setup bei create.required angegeben werden.

Sprachen anpassen 

Wenn Sie mit Sprachen arbeiten oder die Defaultwerte für Label und Comboboxinhalte individuell anpassen möchten, müssen Sie im Locallangbereich die entsprechenden Angaben durchführen.

plugin.tx_srfeuserregister_pi1._LOCAL_LANG { 
 de {   
 fe_users.tx_srfeuserextrafieldindustry_industry = 
Branchenauswahl: 
 fe_users.tx_srfeuserextrafieldindustry_industry.I.0 = 
 --- 
 fe_users.tx_srfeuserextrafieldindustry_industry.I.1 = 
Produzent1 
 fe_users.tx_srfeuserextrafieldindustry_industry.I.2 = 
Produzent2 
 fe_users.tx_srfeuserextrafieldindustry_industry.I.3 = 
Produzent3 
 fe_users.tx_srfeuserextrafieldindustry_industry.I.4 = 
Produzent4 
 fe_users.tx_srfeuserextrafieldindustry_industry.I.5 = 
Produzent5 
 } 
}