Joomla Registrierung nur mit Benutzername (Pseudonym) und Eingabefelder reduzieren

0
124

Die Nutzung einer Webseite muss nach deutschen Gesetzen ohne personenbezogene Daten möglich sein. Die neuen Benutzer werden bei der Registrierung im Normalfall nach Name (Vor- und Nachname), Username (Pseudonym), E-Mail und Passwort gefragt. Nun sollte aber auf das Eingabefeld Name verzichtet werden um den gesetzlichen Vorgaben zu entsprechen.

Da Joomla und andere Extensionen aber beide Namensfelder verwalten musste nun eine vernüftige Lösung her. Es sollte also nur nach dem Benutzernamen (Pseudonym) gefragt werden und nach meinen Vorstellungen sollte der Wert des Feldes Name mit dem Wert des Feldes Benutzername gleichgesetzt werden, so dass Name und Benutzername identisch sind. Außerdem sollte die doppelte Eingabe von E-Mail und Passwort auf eine einfache Eingabe reduziert werden.

Getestet mit Joomla 3.7x

Registrierung vorher:

Registrierung nachher:

Man sollte auf keinen Fall einen Core-Hack durchführen da die manuelle Änderungen dann nicht updatesicher sind. Deshalb habe ich mich für eine sogenannte Override-Lösung entschieden.

Template-Override erstellen:

Als erstes erstellen wir das Registrierungsformular als Template-Override. Danach kann dann der Output bzw. das Formular für die Registrierung im Template-Ordner geändert werden.

Erstelle die Verzeichnisse /templates/DEIN_TEMPLATE/html/com_users/registration in deinem aktiven Template-Ordner.

Kopiere die Datei /components/com_users/views/registration/tmpl/default.php dann in diesen Ordner.

Output vom Registrierungsformlar ändern:

Im Normalfall nimmt Joomla alle Eingabefelder von der Formular-Datei /components/com_users/models/forms/registration.xml, wo diese definiert werden und dann in der Ausgabe gezeigt werden. Diese Datei sollte auf keinen Fall manuell geändert werden, da sonst ein Core-Hack gemacht wird.

Öffne die zuvor kopierte Datei default.php in Deinem Template-Ordner und füge nach der Zeile

JHtml::_('behavior.formvalidator');

folgenden PHP-Code ein:

$this->form->setValue('name', null, 'Placeholder');
$this->form->setFieldAttribute('name', 'type', 'hidden');
$this->form->setValue('email2', null, 'Placeholder');
$this->form->setFieldAttribute('email2', 'type', 'hidden');
$this->form->setValue('password2', null, 'Placeholder');
$this->form->setFieldAttribute('password2', 'type', 'hidden');

Hier werden die Eingabefelder Name, E-Mail2 und Passwort2 mit Platzhaltern gefüllt und für die Eingabe im Formular versteckt.

Für einen Bypass um eigene Vergleichsregeln zu verwenden finde folgende Zeilen:

<form id="member-registration" action="<?php echo JRoute::_('index.php?option=com_users&task=registration.register'); ?>" method="post" class="form-validate form-horizontal well" enctype="multipart/form-data">
<input type="hidden" name="task" value="registration.register" />

ändere die Zeilen wie folgt:

<form id="member-registration" action="<?php echo JRoute::_('index.php?option=com_users&task=registration2.register'); ?>" method="post" class="form-validate form-horizontal well" enctype="multipart/form-data">
<input type="hidden" name="task" value="registration2.register" />

Also den Wert von registration.register nach registration2.register ändern.

Controller-Override erstellen:

Hier werden jetzt die neuen Vergleichsregeln gesetzt. Finde dazu folgende Datei:

/components/com_users/controllers/registration.php

Erstelle eine Kopie der Datei mit dem Namen registration2.php im gleichen Ordner.

Öffne die Datei registration2.php und finde folgende Zeile:

class UsersControllerRegistration extends UsersController

ändere die Zeile wie folgt:

class UsersControllerRegistration2 extends UsersController

Ab jetzt wird das Joomla Registrierungsformular diese Klasse zu Erstellung eines neuen Benutzers verwenden.

Finde in dieser Datei folgende Methode:

public function register()

Füge nach dieser Zeile:

$requestData = $this->input->post->get('jform', array(), 'array');

Hier werden die Eingabedaten vom Registrierungsformular verarbeitet.

folgenden PHP-Code ein:

$requestData['name'] = $requestData['username'];
$requestData['email2'] = $requestData['email1'];
$requestData['password2'] = $requestData['password1'];

Hier setze ich das Feld Name mit dem Feld Benutzername gleich und die doppelten Eingaben von E-Mail und Passwort fallen weg da ich diese auch gleichsetze.

Fertig!

 

HINTERLASSEN SIE EINE ANTWORT

Bitte geben Sie Ihren Kommentar ein!
Please enter your name here