SMF Support > FAQ & Tutorials
[FAQ] Wie füge ich zum Profil weitere Felder hinzu?
andrea:
Mittlerweile ist auch eine Modifikation von winrules für die SMF Versionen 1.1 RC2 und 1.1 RC3 verfügbar:
Custom Profile Field Mod
Alternativ findet Ihr die Lösung in diesen Tutorials (englisch):
Adding new profile values... (im Chartermember Bereich)
Creating custom profile fields in SMF
Die deutsche Übersetzung von robo47 findet ihr weiter unten.
robo47:
ist das im chartermember-bereich weil ich ne fehlermeldung bekomm
andrea:
Habe noch einen 2. Link angefügt, welcher allgemein zugänglich ist.
robo47:
danke
robo47:
hier die Übersetzung:
Erstellen individueller Profilfelder im SMF
Eines der wichtigsten Dinge bei einen guten Forum ist die Anpassungsfähigkeit. Und ein großer Teil der Anpassung ist es die Mitglied Informationen über sich selbst- und Informationen die wichtig für das Forum sind.
Eine wichtige Anmerkung ist, dass dieses Tutorial für das SMF geschrieben wurde und wahrscheinlich nicht an anderer Stelle funktioniert. Wenn du Informationen für eine andere Forums-Software suchen, bist du hier falsch.
Was willst du tun?
Plannung ist für alles wichtig. Du musst wissen was für eine Art von Typ du willst und wie er aussehen sol. In diesem Tutorial werden wir 2 Beispiele behandeln . Text und Auswahl aus einer Liste. Es gibt noch andere Möglichkeiten, das hier sind nur Beispiele.
Du musst auch wissen wo du sie hinhaben willst. Anzeigen bei den anderen Mitglieder-Informationen bei Post? Nur im Profil? Beides? Uch werde euch alle 3 Möglichkeiten zeigen, aber am besten ist es, wenn ihr bedenkt, was ihr wollt und was eure Mitglieder wollen.
Es steckt alles im Template-System...
Die Möglichkeit das Profil zu verändern steckt in dem leistungsfähigen Template-System des SMF. Während Felder autmaitsch mit einen Interface hinzugefügt werden könnten, gibt einem dieser Weg die meiste Kontrolle darüber wie die Dinge ablaufen und aussehn.
Aber du must kein PHP oder etwas anderes lernen - du must nur wissen wie man kopiert und einfügt.
Du wirst auf jeden Fall einen Texteditor benötigen. Es gibt mehrere, so wie zum Beispiel ConText .
Hinzufügen eines einfachen Textfeldes
Dies ist wohl die einfachste Methode. Bei diesem Beispiel werden wir ein Feld mit dem Namen "location" zum Profil hinzufügen.
Öffne Themes/yourtheme/Profile.template.php in einem Texteditor. Wenn du die Datei nicht hast, koprier sie vom Standard-Theme (default theme).
Wer werden es in der Nähe des Feldes "website" platzieren, also sucht nach:
--- Code: ---<td><input
type="text" name="websiteUrl" size="50" value="',
$context['member']['website']['url'], '" /></td>
--- End code ---
Anmerkung: Dies kann etwas abweichen, abhängig von eurem Theme.
Jetzt fügt das darunter hinzu: ihr braucht nichts zu verändern aus der Wort "Location".
--- Code: ---</tr><tr> <td
width="40%"><b>Location: </b></td> <td><input
type="text" name="default_options[text_location]" size="50" value="',
isset($context['member']['options']['text_location']) ?
$context['member']['options']['text_location'] : '', '"
/></td>
--- End code ---
Anmerkung: Der "default_optoons" Teil macht das Feld global für alle Themes. Benutzt "options" um es nur für das aktuelle Theme zu verwenden.
Wenn du willst, dass es angzeigt wird, wenn man sich das Profil anschaut, füge es hier auch ein. In der selben Datei suche:
--- Code: ---<td><a href="',
$context['member']['website']['url'], '" target="_blank">',
$context['member']['website']['title'], '</a></td>
--- End code ---
Und füge hinter dieser Linie das hinzu:
--- Code: ---</tr><tr>
<td><b>Location: </b></td> <td>',
isset($context['member']['options']['text_location']) ?
$context['member']['options']['text_location'] : '',
'</td>
--- End code ---
Das ist alles was du für ein Textfeld im Profil brauchst. Alles was jetzt noch fehlt ist, das Feld zum Anzeige (Display) und Persönliche Nachrichten (InstantMessage) Tehme hinzuzufügen. Das wird so gemacht:
Öffne Themes/yourtheme/Display.template.php, und suche nach:
--- Code: ---if
(!empty($settings['show_blurb']) && $message['member']['blurb'] !=
'')
--- End code ---
Jetze werden wir etwas genau vor das "blurb" setzen, indem wir darüber hinzufügen:
--- Code: ---if
(isset($message['member']['options']['text_location'])) echo 'Location: ',
$message['member']['options']['text_location'], '<br />';
--- End code ---
Und jetzt das gleiche nochmal für InstantMessage.template.php
Hinzufügen einer einfachen Auswahl
Manchmal ist es einfacher etwas aus einer Liste auszuwählen. Glücklicherweise kannst du das im Profil machen, anstatt eine Textbox zu benutzen. In diesem Fall werden wir ein Feld "Favorite Browser" machen.
Das einzige was wir anders machen als im oberen Teil: ( und natürlich ausser dem benutzen von "Favorite Browser" anstatt "Location"...)
--- Code: ---</tr><tr> <td
width="40%"><b>Location: </b></td> <td><input
type="text" name="default_options[text_location]" size="50" value="',
isset($context['member']['options']['text_location']) ?
$context['member']['options']['text_location'] : '', '" /></td>
--- End code ---
Jetzt ist es fast nur Basic-HTML, aber anfangs sieht es kompliziert aus. Wir werden das <input>-Element zu einen <select>-Element ändern:
--- Code: ---</tr><tr> <td
width="40%"><b>Favorite Browser: </b></td> <td>
<select name="default_options[text_favorite_browser]"> <option',
isset($context['member']['options']['text_favorite_browser']) &&
$context['member']['options']['text_favorite_browser'] == "Internet Explorer" ?
' selected="selected"' : '', '>Internet Explorer</option> <option',
isset($context['member']['options']['text_favorite_browser']) &&
$context['member']['options']['text_favorite_browser'] == "Opera" ? '
selected="selected"' : '', '>Opera</option> <option',
isset($context['member']['options']['text_favorite_browser']) &&
$context['member']['options']['text_favorite_browser'] == "Mozilla Firefox" ? '
selected="selected"' : '', '>Mozilla Firefox</option> </select>
</td>
--- End code ---
Ich weis, das sieht ein bißchen kompliziert aus. Aber macht euch keine Sorgen, ich werde eine "SDK" für Themes herausgeben, dies wir etwas enthalten, was dies viel einfacher macht. Aber jetzt nur fürs kopieren und einfügen, macht euch keine Gedanken über die Details.
Was ist mit der Registration?
Es ist fast genauso einfach, zusätzliche Daten beim registrieren zu erfassen. Diesmal müssen wir das Register-Template editieren und das finden:
--- Code: ---</tr><tr> <td
width="40%"> <b>', $txt[82], ':</b> </td> <td>
<input type="password" name="passwrd2" size="30" /> </td>
--- End code ---
Und dann fügt etwas, etwo so darunter, für euren Lieblingsbrowser, nur als Beispiel:
--- Code: ---</tr><tr> <td
width="40%"> <b>Favorite Browser:</b> </td> <td>
<select name="options[text_favorite_browser]"> <option>Internet
Explorer</option> <option>Opera</option> <option>Mozilla
Firefox</option> </select> </td>
--- End code ---
Anmerkung: Bei der Registrierung sind Optionen immer Global zu allen Themes.
Ich hoffe das war brauchbar für euch
-[Unknown]
Übersetzt von Robo47
für Fehler jeglicher Art entschuldige ich mich schonmal im vorraus, mein Englisch ist nicht sonderlich gut, aber ich glaube man kann mit der Übersetzung etwas anfangen.
Navigation
[0] Message Index
[#] Next page
Go to full version