Vorwort:
Vorweg möchte ich sagen, das diese Modifikation eine Betaversion ist. So weit funktioniert diese ohne Probleme. Jedoch ist der Code Stellenweise noch nicht optimal oder bietet noch nicht vollkommen den gewünschten Effekt.
Um Geschlechtsabhängige Titel nutzen zu können, wurde in der Tabelle "users" ein zusätzliches Feld angelegt. Somit kann das Profilfeld "Sex" gelöscht werden.
Information:
Bisher müssen Titel, welche für Männliche/Weibliche User gleich sein sollen, auch zweimal erstellt werden. Die Funktion der Titelbelegung für beide, ist noch nicht fertig, erscheint allerdings schon in der Titelbestimmung.
Zu ändernde Dokumente:
-member.php
-usercp.php
-/admin/usertitles.php
-/inc/function_post.php
Zu änderndes Template:
Benutzer Control-Panel Templates(ausklappen) -> usercp_profile_profilefields
Zu ändernde Languagedateien:
inc/sprachpaket/usercp.lang
inc/sprachpaket/admin/usertitles.lang
Ich übernehme keine Haftung für Schäden, die beim Einbau der Modifikation entstehen. Allerdings werde ich mich gern bemühen, Support zu geben.
Anleitung:
1.) Bitte setze dein Forum in den Wartungszustand.
2.) Datenbankdaten
Öffne phpmyadmin und trage folgendes ein:
PHP-Code:
ALTER TABLE `mybb_usertitles` ADD `title_sex` SMALLINT( 4 ) DEFAULT '0' NOT NULL AFTER `title` ;
ALTER TABLE `mybb_users` ADD `gender` SMALLINT( 4 ) DEFAULT '0' NOT NULL ;
Anmerkung
Falls ihr einen anderen Prefix habt, dann ersetzt
mybb durch euren.
3.) Bearbeiten der Dateien:
Öffne .../admin/usertitles.php
Suche 2x:
PHP-Code:
"title" => addslashes($mybb->input['title']),
füge darunter ein:
PHP-Code:
"title_sex" => intval($mybb->input['title_sex']),
Suche 2x:
PHP-Code:
makeinputcode($lang->minimum_posts, "posts", "", "4");
füge darunter ein:
PHP-Code:
makelabelcode($lang->title_sex, "<select name=\"title_sex\">
<option value='0'>$lang->title_sex_default</option>
<option value='1'>$lang->title_sex_male</option>
<option value='2'>$lang->title_sex_female</option>
</select>");
Speichern und schließen.
Öffne .../inc/languages/sprachpaket/admin/usertitles.lang.php
Suche:
Füge darüber ein:
PHP-Code:
$l['title_sex'] = "Geschlechtszuordnung";
$l['title_sex_default'] = "Beide(auch für unbestimmtes Geschlecht)";
$l['title_sex_female'] = "Weiblich";
$l['title_sex_male'] = "Mänlich";
Speichern und schließen.
Öffne .../inc/functions_post.php
Suche:
PHP-Code:
if(!is_array($titlescache))
{
// Get user titles (i guess we should improve this, maybe in version3.
$query = $db->query("SELECT * FROM ".TABLE_PREFIX."usertitles ORDER BY posts DESC");
while($usertitle = $db->fetch_array($query))
{
$titlescache[$usertitle['posts']] = $usertitle;
}
unset($usertitle);
}
und ersetzte mit:
PHP-Code:
iif(!is_array($titlescache))
{
$query = $db->query("SELECT u.* FROM ".TABLE_PREFIX."users u WHERE u.uid='$post[uid]'");
$user = $db->fetch_array($query);
// Get user titles (i guess we should improve this, maybe in version3.
// SQL-Befehl: ALTER TABLE `mybb_users` ADD `gender` SMALLINT( 4 ) DEFAULT '0' NOT NULL ;
if ($user['gender']=='0' || $user['gender']=='1'){ // Geschlecht: 0 = Unbestimmt || 1 = Männlich
$query = $db->query("SELECT * FROM ".TABLE_PREFIX."usertitles WHERE title_sex=1 ORDER BY posts DESC");
while($usertitle = $db->fetch_array($query))
{
$titlescache[$usertitle['posts']] = $usertitle;
}
}else{
$query = $db->query("SELECT * FROM ".TABLE_PREFIX."usertitles WHERE title_sex=2 ORDER BY posts DESC");
while($usertitle = $db->fetch_array($query))
{
$titlescache[$usertitle['posts']] = $usertitle;
}
}
unset($usertitle);
}
Speichern und schließen
Öffne .../usercp.php
Suche:
PHP-Code:
if($user['icq'] != "0")
{
$icq = stripslashes($user['icq']);
}
else
{
$icq = "";
}
Füge darunter ein:
PHP-Code:
// Extrafeld - Geschlechtsbestimmung
if($user['gender'] =='' || $user['gender'] >='0')
{
$gender_array = array(0=>'$lang->title_sex_default',1=>'$lang->title_sex_male',2=>'$lang->title_sex_female');
$gender = $gender_array[$user['gender']];
}
// Extrafeld ende
Suche:
PHP-Code:
"awayreason" => addslashes(htmlspecialchars($mybb->input['awayreason']))
Ersetzte mit:
PHP-Code:
"awayreason" => addslashes(htmlspecialchars($mybb->input['awayreason'])),
// Extrafeld - Geschelchtsbestimmung
"gender" => intval($mybb->input['gender'])
// Extrafeld ende
Speichern schließen .
Öffne .../inc/languages/sprachpaket/usercp.lang.php
Suche:
Füge darüber ein:
PHP-Code:
// Extrafeld - Geschlechtsbestimmung
$l['gender_default'] = "Nicht ausgewählt";
$l['gender_female'] = "Weiblich";
$l['gender_male'] = "Männlich";
// Extrafeld ende
Speichern und schließen
Öffne: .../member.php
Suche:
PHP-Code:
$query = $db->query("SELECT * FROM ".TABLE_PREFIX."usertitles ORDER BY posts DESC");
Ersetzte mit:
PHP-Code:
if($memprofile['gender']=='0'){
$query = $db->query("SELECT * FROM ".TABLE_PREFIX."usertitles WHERE title_sex='1' ORDER BY posts DESC");
}else{
$query = $db->query("SELECT * FROM ".TABLE_PREFIX."usertitles WHERE title_sex='$memprofile[gender]' ORDER BY posts DESC");
}
Speichern und schließen.
Öffne das Template:"usercp_profile_profilefields"
(ACP->Benutzer Control-Panel Templates(ausklappen) -> usercp_profile_profilefields
Suche:
Füge darüber ein:
Code:
<tr><td><select name="gender">
<option value='0'>$lang->gender_default</option>
<option value='1'>$lang->gender_male</option>
<option value='2'>$lang->gender_female</option>
</select>
</td></tr>
4.) Das Profilfeld sex kann nun gelöscht werden
5.)Das Forum kann aus den Wartungsmodus genommen werden
6.) Fröhliches Titel erstellen (Beachte dabei, das du im Momment noch für mänl./weibl je einen Titel eintragen musst)
Zusatz:
In der Final soll es folgendes geben:
- Überarbeitete Titelübersicht
- Fertigstellung der Option "Für beide nutzen"
(- Eventuelles einarbeiten in ein Plugin)
- Optimierung des Codes
Ich wünsche euch viel Spaß mit den Geschlechtsabhängigen Titeln. Über Feedback und Vorschläge würde ich mich freuen.
Mfg Garlant