MyBB.de Forum

Normale Version: Benutzertitel Geschlechtsabhängig
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Wie wäre es, wenn man Benutzertitel Geschlechtsabhängig machen könnte?

Man kann dabei festlegen für welches Geschlecht der Titel gelten soll und oder, ob der Titel für Mänlich wie auch weiblich gelten soll.
Sollte der User dabei sein Geschlecht nicht angegeben haben, gillt dann einfach der mänl. Titel, als default.

Ist so etwas schon in Planung oder gibt es so etwas bereits als Add On?

Mfg Garlant
Ob sowas in Planung ist weiß ich nicht, es gibt es bisher auf jeden Fall nicht.
Ich habe einige Stellen nun so weit umgeschrieben, das geschlechtsabhängige Titel möglich sind. Die Frage ist nur, ob ich dies hier posten könnte/solle oder einschicken sollte. Allerdings denke ich, würde es besser sein die Anleitung hier her zu schreiben, da es einige kleinere sind Änderungen sind und keine neuen Datein benötigt werden.
Ich werde gleich Anfangen die Modifikation auf Funktionalität zu testen. Wenn es keine Fehler bei mir geben sollte, werde ich die Betaversion gern zum Test bereitstellen.

Mfg Garlant
Du kannst gerne ein Anleitung bereitstellen. Wink
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. Wink

2.) Datenbankdaten
Öffne phpmyadmin und trage folgendes ein:
PHP-Code:
ALTER TABLE `mybb_usertitlesADD `title_sexSMALLINT) DEFAULT '0' NOT NULL AFTER `title` ;
ALTER TABLE `mybb_usersADD `genderSMALLINT) 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:
PHP-Code:
?>
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:
PHP-Code:
?>
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:
Code:
$customfields
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
Bugfix:
Öffne .../inc/functions_post.php
Suche:
PHP-Code:
if(!is_array($titlescache))
    {
        
// 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 ($mybb->user['gender']=='0' || $mybb->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");
        }
        if (
$mybb->user['gender']=='2'){
            
$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);
    } 
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);
    } 
Kann man den hier beschriebenen Effekt auch irgendwo sehen? Find die Idee nämlich gar nicht schlecht.
Hallo Computexx.
Wenn du dier das ganze anschauen möchtest, so empfehle ich dir mal auf meine Userliste zu gehen, dir da die User nach Beiträgen sortieren lässt und dann auf die Profile klickst.
Ich denke im geplanten Update des ganzen werde ich die Titelverwaltung etwas übersichtlicher gestalten und in der Helpansicht einen Eintrag hinzufügen, inder die Titel angezeigt werden. Dazu kommen noch ein paar kleinere Bonbons, wie man so schön sagt.

http://garlodi.net/forum/memberlist.php
Mal ein weiblicher Titel
Der Gegenpart

p.s Leider sind nicht mehr alle User anzutreffen und haben daher ihr Geschlecht noch immernicht ausgewählt.

Mfg Garlant
Gibt es das auch als Plugin?
Nein, derzeit nicht.
Seiten: 1 2