Im folgenden wird beschrieben, wie man neue Felder zur Registrierung hinzufügt und die Eingaben im Profil und neben Posts und IMs anzeigt.
Es ist einfach schrittweise das auszuführen was dort steht und entspricht einem komplett zerpflücktem mod-file - allerdings ist dabei folgendes zu beachten:
- "MyFieldText" ist natürlich durch den Text zu ersetzen, den du vor dem Wert anzeigen lassen willst ( Im Profil, Posts oder IM's )
- in "$userprofile{$user}->[20]" ist die 20 je nach dem wieviele Einträge im Profil du schon vorgenommen hast zu erhöhen
Dies kann auch durch mods erfolgt sein. Bitte prüfe daher, ob ein mod schon etwas zu dem Userfile hinzugefügt hat!
- "name="myinput"" ist durch einen im Script eindeutigen, nicht schon belegten Variablen Namen zu ersetzen (d.h. je neues Feld ein neuer Name)
OK nun geht's los...
Zur Anzeige der neuen Eingabe neben einem Post oder IM
[code]
Sources/Load.pl
$userprofile{$user}->[9] = $userprofile{$user}->[9] ? qq~~ : '';
$userprofile{$user}->[20] = $userprofile{$user}->[20] ? qq~MyFieldText: $userprofile{$user}->[20] ~ : '';
[/code]
Zur Anzeige im Profil, während der Bearbeitung:
[code]
Sources/Profile.pl
$txt{'35'}:
$INFO{'username'}
MyFieldText:
[/code]
Zum Zulassen bestimmter Zeichen im neuen Feld, Umformung des Eingabetextes ins HTML Format und schreiben ins Userfile.
In diesem Beispiel werden nur Buchstaben zugelassen. Bei Fehleingabe kommt eine Fehlermeldung die auch entsprechend anzupassen ist.
( Das foldende wird beim Ausführen der Modifizierung des Profils ausgeführt )
[code]
&fatal_error("$txt{'75'}") if($member{'name'} eq '');
&fatal_error("$txt{'242'}") if($member{'name'} !~ /^[\s0-9A-Za-z\[\]#%+,-|\.:=?@^_]+$/);
&fatal_error("Please ENTER something into the Field MyFieldText") if($member{'myinput'} eq '');
&fatal_error("Please ENTER only characters into the Field MyFieldText") if($member{'myinput'} =~ /[^a-zA-Z. ]/);
&ToHTML($member{'name'});
&ToHTML($member{'myinput'});
print FILE "$FORM{'hideemail'}\n";
print FILE "$member{'myinput'}\n";
[/code]
Willst du, dass für MyField keine Eingabe erforderlich ist, nehme die komplette Zeile im add-after-tag mit "eq ''" heraus.
Möchtest du mehr bzw andere Zeichen zulassen sind folgende Seiten hilfreich:
( Suchkriterien hinzufügen / Regular Expressions )
http://www.linuxuniversity.org/dev_track/perl-class/week5/lesson5.html
http://www.perldoc.com/perl5.6/pod/perlre.html#Regular-Expressions
http://stein.cshl.org/WWW/software/CGI/
Zur Anzeige beim Ansehen des Profils
[code]
$txt{'68'}:
$memsettings[1]
MyFieldText:
$memsettings[20]
$txt{'35'}:
$memsettings[1]
[/code]
Anzeige bei der Registrierung ( erfolgt hier nach den Passwortfeldern )
[code]
Sources/Register.pl
* $txt{'82'}:
* MyFieldText:
[/code]
maxlength für das Eingabefeld kann entsprechend angepasst werden.
Auch hier noch einmal der Check welche Zeichen im neuen Feld zugelassen werden sollen und ob ein Leerstring erlaubt ist.
[code]
&fatal_error("($member{'username'}) $txt{'37'}") if($member{'username'} eq '');
&fatal_error("($member{'username'}) $txt{'99'}") if($member{'username'} eq '_' || $member{'username'} eq '|');
&fatal_error("Please ENTER something into the Field MyFieldText") if($member{'myinput'} eq '');
&fatal_error("Please ENTER only characters into the Field MyFieldText") if($member{'myinput'} =~ /[^a-zA-Z. ]/);
print FILE "$FORM{'hideemail'}\n";
print FILE "$member{'myfield'}\n";
fclose(FILE);
[/code]
So ich hoffe das war's *g*
Übrigends: Hast du vor, dieses bei einem deiner mods zu nutzen, empfehle ich alle Anzeigetexte durch Variablen zu ersetzen und im language-file zu definieren!
Ebenfalls ist es evt. besser, die neuen Daten statt an die Userdatei anzuhängen, in eine extra Datei zu speichern. Dies erhöht die Kompatibilität mit anderen mods!
MFG
T-Master