Default Avatar für Gender Mod

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt, um einen neuen Mod zu entwickeln, geht's in [3.0.x] Mods in Entwicklung weiter.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: Default Avatar für Gender Mod

Beitrag von Helmut »

Hallo Miriam,

ich habs jetzt hinbekommen, das Problem lag nur noch daran, dass ich der Funktion die user_id und die user_gender mit übergeben musste. Hier kommt nun die Lösung welche ich eingebaut habe:

öffne die viewtopic.php und finde darin

Code: Alles auswählen

                'online'            => false,
                'avatar'            => ($user->optionget('viewavatars')) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_avatar_width'], $row['user_avatar_height']) : '',
 
und ersetzte durch folgendes:

Code: Alles auswählen

                'online'            => false,
                'avatar'            => ($user->optionget('viewavatars')) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_avatar_width'], $row['user_avatar_height'], $row['user_id'], $row['user_gender']) : '',
 
finde etwas später

Code: Alles auswählen

                'avatar'        => ($user->optionget('viewavatars')) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_avatar_width'], $row['user_avatar_height']) : '',
                'age'            => '',
 
und ersetzte durch folgendes:

Code: Alles auswählen

                'avatar'        => ($user->optionget('viewavatars')) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_avatar_width'], $row['user_avatar_height'], $row['user_id'], $row['user_gender']) : '',
                'age'            => '',
 

Öffne die memberlist.php und finde darin:

Code: Alles auswählen

        $poster_avatar = get_user_avatar($member['user_avatar'], $member['user_avatar_type'], $member['user_avatar_width'], $member['user_avatar_height']);
 
und ersetzte durch folgendes:

Code: Alles auswählen

        $poster_avatar = get_user_avatar($member['user_avatar'], $member['user_avatar_type'], $member['user_avatar_width'], $member['user_avatar_height'], $member['user_id'], $member['user_gender']);
 
finde etwas später

Code: Alles auswählen

            // Misusing the avatar function for displaying group avatars...
            $avatar_img = get_user_avatar($group_row['group_avatar'], $group_row['group_avatar_type'], $group_row['group_avatar_width'], $group_row['group_avatar_height'], 'GROUP_AVATAR');
 
und ersetzte durch folgendes:

Code: Alles auswählen

            // Misusing the avatar function for displaying group avatars...
            $avatar_img = get_user_avatar($group_row['group_avatar'], $group_row['group_avatar_type'], $group_row['group_avatar_width'], $group_row['group_avatar_height'], $data['user_id'], $data['user_gender'], 'GROUP_AVATAR');
 
finde etwas später

Code: Alles auswählen

        'AVATAR_IMG'        => get_user_avatar($data['user_avatar'], $data['user_avatar_type'], $data['user_avatar_width'], $data['user_avatar_height']),
 
und ersetzte durch folgendes:

Code: Alles auswählen

        'AVATAR_IMG'        => get_user_avatar($data['user_avatar'], $data['user_avatar_type'], $data['user_avatar_width'], $data['user_avatar_height'], $data['user_id'], $data['user_gender']),
 

Öffne die includes/functions_display.php und finde darin:

Code: Alles auswählen

function get_user_avatar($avatar, $avatar_type, $avatar_width, $avatar_height, $alt = 'USER_AVATAR')
{
    global $user, $config, $phpbb_root_path, $phpEx;

    if (empty($avatar) || !$avatar_type)
    {
        return '';
    }
 
und ersetzte durch folgendes:

Code: Alles auswählen

function get_user_avatar($avatar, $avatar_type, $avatar_width, $avatar_height, $user_id, $user_gender, $alt = 'USER_AVATAR')
{
    global $cache, $user, $config, $phpbb_root_path, $phpEx;

    // 
    // Add for Default Avatar Mod according to gender Mod 
    // 

    if (( empty($avatar) || !$avatar_type) && $user_id != 1 && $user_gender == '1')
    { 
        return '<img src="images/avatars/avatar_man.gif" alt="' . ((!empty($user->lang[$alt])) ? $user->lang[$alt] : $alt) . '" />';
    } 
    else if (( empty($avatar) || !$avatar_type) && $user_id != 1 && $user_gender == '2')
    { 
        return '<img src="images/avatars/avatar_frau.gif" alt="' . ((!empty($user->lang[$alt])) ? $user->lang[$alt] : $alt) . '" />';
    } 
    else if (( empty($avatar) || !$avatar_type) && $user_id != 1) 
    { 
        return '<img src="images/avatars/no_avatar.gif" alt="' . ((!empty($user->lang[$alt])) ? $user->lang[$alt] : $alt) . '" />';
    } 
    else if (( empty($avatar) || !$avatar_type) && $user_id == 1 ) 
    { 
        return '<img src="images/avatars/guest_avatar.gif" alt="' . ((!empty($user->lang[$alt])) ? $user->lang[$alt] : $alt) . '" />';
    } 
    // ---------------------------------------------------------
 
Mit dieser Änderung können für Gäste, Frauen, Männer und keine Geschlechtsangabe unterschiedliche Avatare angezeigt werden, falls kein Avatar vom User gewählt wurde.


[EDIT]
Ein kleiner Nachtrag damit auch im UCP bei der Ansicht der privaten Nachrichten der richtige Avatar angezeigt wird.

Öffne die includes/ucp/ucp_pm_viewmessage.php und finde darin:

Code: Alles auswählen

    $user_row['avatar'] = ($user->optionget('viewavatars')) ? get_user_avatar($user_row['user_avatar'], $user_row['user_avatar_type'], $user_row['user_avatar_width'], $user_row['user_avatar_height']) : '';
 
und ersetzte durch folgendes:

Code: Alles auswählen

    $user_row['avatar'] = ($user->optionget('viewavatars')) ? get_user_avatar($user_row['user_avatar'], $user_row['user_avatar_type'], $user_row['user_avatar_width'], $user_row['user_avatar_height'], $user_row['user_id'], $user_row['user_gender']) : '';
 
Öffne die Datei includes/ucp/ucp_profile.php und finde darin

Code: Alles auswählen

                    'AVATAR'        => get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']),
 
und ersetzte durch folgendes:

Code: Alles auswählen

                    'AVATAR'        => get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height'], $user->data['user_id'], $user->data['user_gender']),
 
Öffne die Datei includes/ucp/ucp_groups.php und finde darin

Code: Alles auswählen

                    $avatar_img = (!empty($group_row['group_avatar'])) ? get_user_avatar($group_row['group_avatar'], $group_row['group_avatar_type'], $group_row['group_avatar_width'], $group_row['group_avatar_height'], 'GROUP_AVATAR') : '<img src="' . $phpbb_root_path . 'adm/images/no_avatar.gif" alt="" />';
 
und ersetzte durch folgendes:

Code: Alles auswählen

                    $avatar_img = (!empty($group_row['group_avatar'])) ? get_user_avatar($group_row['group_avatar'], $group_row['group_avatar_type'], $group_row['group_avatar_width'], $group_row['group_avatar_height'], '', '', 'GROUP_AVATAR') : '<img src="' . $phpbb_root_path . 'adm/images/no_avatar.gif" alt="" />';
 
Öffne die Datei includes/mcp/mcp_warn.php und finde darin

Code: Alles auswählen

        $avatar_img = get_user_avatar($user_row['user_avatar'], $user_row['user_avatar_type'], $user_row['user_avatar_width'], $user_row['user_avatar_height']);
 
und ersetzte durch folgendes:

Code: Alles auswählen

        $avatar_img = get_user_avatar($user_row['user_avatar'], $user_row['user_avatar_type'], $user_row['user_avatar_width'], $user_row['user_avatar_height'], $user_row['user_id'], $user_row['user_gender']);
 
finde etwas später nochmal

Code: Alles auswählen

        $avatar_img = get_user_avatar($user_row['user_avatar'], $user_row['user_avatar_type'], $user_row['user_avatar_width'], $user_row['user_avatar_height']);
 
und ersetzte durch folgendes:

Code: Alles auswählen

        $avatar_img = get_user_avatar($user_row['user_avatar'], $user_row['user_avatar_type'], $user_row['user_avatar_width'], $user_row['user_avatar_height'], $user_row['user_id'], $user_row['user_gender']);
 
Öffne die Datei includes/mcp/mcp_notes.php und finde darin

Code: Alles auswählen

        $avatar_img = get_user_avatar($userrow['user_avatar'], $userrow['user_avatar_type'], $userrow['user_avatar_width'], $userrow['user_avatar_height']);
 
und ersetzte durch folgendes:

Code: Alles auswählen

        $avatar_img = get_user_avatar($userrow['user_avatar'], $userrow['user_avatar_type'], $userrow['user_avatar_width'], $userrow['user_avatar_height'], $userrow['user_id'], $userrow['user_gender']);
 

Öffne die Datei includes/acp/acp_users.php und finde darin

Code: Alles auswählen

               // Generate users avatar
                $avatar_img = ($user_row['user_avatar']) ? get_user_avatar($user_row['user_avatar'], $user_row['user_avatar_type'], $user_row['user_avatar_width'], $user_row['user_avatar_height']) : '<img src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />';  
und ersetzte durch folgendes:

Code: Alles auswählen

               // Generate users avatar
                $avatar_img = ($user_row['user_avatar']) ? get_user_avatar($user_row['user_avatar'], $user_row['user_avatar_type'], $user_row['user_avatar_width'], $user_row['user_avatar_height'], $user_row['user_id'], $user_row['user_gender']) : '<img src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />';  
Öffne die Datei includes/acp/acp_groups.php und finde darin

Code: Alles auswählen

                $avatar_img = (!empty($group_row['group_avatar'])) ? get_user_avatar($group_row['group_avatar'], $group_row['group_avatar_type'], $group_row['group_avatar_width'], $group_row['group_avatar_height'], 'GROUP_AVATAR') : '<img src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />';
 
und ersetzte durch folgendes:

Code: Alles auswählen

                $avatar_img = (!empty($group_row['group_avatar'])) ? get_user_avatar($group_row['group_avatar'], $group_row['group_avatar_type'], $group_row['group_avatar_width'], $group_row['group_avatar_height'], '', '', 'GROUP_AVATAR') : '<img src="' . $phpbb_admin_path . 'images/no_avatar.gif" alt="" />';
 

Die folgenden Änderungen sind für alle gedacht, welche Mods verbaut haben, die Avatare verwenden.

Für alle User, die den phpBB Gallery MOD von nickvergessen eingebaut haben:

Öffne die Datei gallery/image_page.php und finde darin:

Code: Alles auswählen

                'POSTER_AVATAR'            => ($user->optionget('viewavatars')) ? get_user_avatar($commentrow['user_avatar'], $commentrow['user_avatar_type'], $commentrow['user_avatar_width'], $commentrow['user_avatar_height']) : '',
 
und ersetzte durch folgendes:

Code: Alles auswählen

                'POSTER_AVATAR'            => ($user->optionget('viewavatars')) ? get_user_avatar($commentrow['user_avatar'], $commentrow['user_avatar_type'], $commentrow['user_avatar_width'], $commentrow['user_avatar_height'], $commentrow['user_id'], $commentrow['user_gender']) : '',
 
Für alle User, die den ACP Announcement Centre Mod von lefty74 eingebaut haben:

Öffne die Datei includes/functions_announcements.php und finde darin:

Code: Alles auswählen

           'ANNOUNCEMENT_AVATAR'    => ($row['user_avatar']) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $avatar_width, $avatar_height, $row['username']) : '<img src="' . $phpbb_root_path . 'styles/' . $user->theme['imageset_path'] . '/theme/images/no_avatar.gif" height="' . $config['announcement_ava_max_size'] . '" width="' . $config['announcement_ava_max_size'] . '" title="" alt=""  />',  
und ersetzte durch folgendes:

Code: Alles auswählen

           'ANNOUNCEMENT_AVATAR'    => ($row['user_avatar']) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $avatar_width, $avatar_height, $row['username'], $row['user_id'], $row['user_gender']) : '<img src="' . $phpbb_root_path . 'styles/' . $user->theme['imageset_path'] . '/theme/images/no_avatar.gif" height="' . $config['announcement_ava_max_size'] . '" width="' . $config['announcement_ava_max_size'] . '" title="" alt=""  />',  
Gruß Helmut :wink:
Zuletzt geändert von Helmut am 31.01.2009 15:27, insgesamt 9-mal geändert.
Ich bin nicht ganz dicht.... na und.
Thyron
Mitglied
Beiträge: 302
Registriert: 09.05.2008 11:59

Re: [Suche] Default Avatar für Gender Mod

Beitrag von Thyron »

Das hört sich ja sehr geil an! :)

Inwiefern braucht man denn nen Avatar für Gäste?

Und auf welchem Gender Mod basiert das Ding? Link wäre nett.

Ich hab das Geschlecht als benutzerdefiniertes Profilfeld eingerichtet... Denke mal da müsst dann nur ne Kleinigkeit geändert werden?
Benutzeravatar
Miriam
Mitglied
Beiträge: 12310
Registriert: 13.10.2004 07:18
Kontaktdaten:

Re:

Beitrag von Miriam »

Top Helmut! Endlich mal jemand, der Anregungen auch annimmt. :D
Miriam hat geschrieben:Du könntest das Geschlecht mit jeden Aufruf get_user_avatar() übergeben, dazu musst Du allerdings alle Aufrufe herausfinden und es dann dort zusätzlich einpflegen.
Gruss, Miriam.
Ich schmeiß' alles hin und...
... lasse es liegen
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: [Suche] Default Avatar für Gender Mod

Beitrag von Helmut »

Hallo Thyron,

die Änderungen sind für den Gender 1.0.1 Mod von eviL<3 gedacht. Dabei wird in der phpbb_users Tabelle eine zusätzliche Spalte user_gender eingefügt. Es ist der selbe Mod, welcher schon im 2.0.x verwendet wurde.

Wenn du das Geschlecht als benutzerdefiniertes Profilfeld eingerichtet hast, dann wird es ohne eine Änderung an den Einträgen in der Datenbank nicht gehen, das Geschlecht der User zu übernehmen. Du müsstest dazu ein kleines Skript schreiben, welches die bestehenden Einträge dann in die andere Tabelle überträgt von phpbb_profile_fields_data nach phpbb_users.

Ob man ein Avatar für Gäste braucht oder nicht, das ist jedem selber überlassen. Theoretisch könnte man die Abfrage in der includes/functions_display.php noch weiter anpassen damit neben dem Geschlecht auch z.B. eine sexuelle Ausrichtung übernommen werden kann, dazu gibt es auch hier eine Erweiterung für den Gender Mod.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Thyron
Mitglied
Beiträge: 302
Registriert: 09.05.2008 11:59

Re: [Suche] Default Avatar für Gender Mod

Beitrag von Thyron »

Kann man die von dir geposteten Änderungen nicht so anpassen, dass das Geschlecht aus der Tabelle profile_fields_data (Spalte pf_gender) ausgelesen wird? Ich kenn mich da selbst leider nicht aus...

Dafür extra auf den Gender Mod umzusteigen, könnte jedenfalls sehr aufwändig für mich werden, da ich statt dem Mod viele individuelle Änderungen gemacht hab, die ich mir einzeln zusammengesucht hab. Dazu kommt das Problem mit den bestehenden Daten, das Feld ist von nahezu allen Usern bei mir ausgefüllt...

Ich hoffe sehr, das geht auch einfacher :-?
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: [Suche] Default Avatar für Gender Mod

Beitrag von Helmut »

Hallo Thyron,

theoretisch geht das schon dass man den Gender Mod entsprechend anpasst, aber wird vermutlich sehr aufwendig werden. Zuerst stellt sich die Frage wie die Information in deiner pf_gender Spalte abgelegt sind, denn der Gender Mod arbeitet mit Dezimalzahlen 0-2 jeweils für das Geschlecht. Es würde gehen wenn sichergestellt ist, dass alle Einträge identisch in ihrer Schreibweise sind wie zum Beispiel Männlich, Weiblich, ..... wenn nicht mit Zahlen gearbeitet wird. Dann muss in der viewtopic.php und in der members.php diese Spalte zusätzlich bei der Abfrage von phpbb_users mit ausgelesen werden, was eine entsprechende Anpassung notwendig macht. Die Anpassungen an meiner Vorlage würden dabei noch den geringsten Anteil ausmachen.

Eine einfache Lösung wäre wenn du den Gender Mod einbaust und dann deine User aufforderst, ihr Profil entsprechend zu ändern. Damit hättest du die Angaben gleich in der richtigen Form in der passenden Spalte. Den Gender Mod bei die einzubauen dürfte kein Problem sein, auch mein neues Forum ist mit vielen Änderungen versehen.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Thyron
Mitglied
Beiträge: 302
Registriert: 09.05.2008 11:59

Re: [Suche] Default Avatar für Gender Mod

Beitrag von Thyron »

Das benutzerdefinierte Profilfeld arbeitet mit den Zahlen 1-3 und hat folgende Optionen:

1 = männlich
2 = weiblich
3 = --

Die Funktionalität, die der Gender Mod bringt, ist in meinem Forum ja schon vorhanden. Daher nutzt es mir nichts diesen einzubauen. Ich habe außerdem über 250 User, die alle ihr Geschlecht bei der Registrierung angegeben haben. Zu einer erneuten Eingabe aufzufordern, käme daher nicht in Frage.

Es ist nur die Anzeige geschlechtspezifischer Avatare, die mir noch fehlt und die kommt doch allein durch deinen Code. Das müsste dann doch genauso funktionieren, auch ohne genau diesen Gender Mod, wenn auf die Daten zugegriffen werden kann. Es kann ja sein, dass ich mich irre. Aber ich glaube ich brauche nur die Zeilen von dir so angepasst, dass die Daten in meiner Datenbank gefunden und entsprechend interpretiert werden.

Selbst weiß ich leider nicht wie ich den Code ändern muss, da ich PHP nicht beherrsche, nur etwas verstehe.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: [Suche] Default Avatar für Gender Mod

Beitrag von Helmut »

Hallo Thyron,

ok, dann ist es nicht so schwer. Ich habe mal testweise den Code etwas angepasst.

Öffne viewtopic.php und finde darin

Code: Alles auswählen

// Holding maximum post time for marking topic read
// We need to grab it because we do reverse ordering sometimes
$max_post_time = 0;

$sql = $db->sql_build_query('SELECT', array(
    'SELECT'    => 'u.*, z.friend, z.foe, p.*',

    'FROM'        => array(
        USERS_TABLE        => 'u',
        POSTS_TABLE        => 'p',
    ),

    'LEFT_JOIN'    => array(
        array(
            'FROM'    => array(ZEBRA_TABLE => 'z'),
            'ON'    => 'z.user_id = ' . $user->data['user_id'] . ' AND z.zebra_id = p.poster_id'
        )
    ),

    'WHERE'        => $db->sql_in_set('p.post_id', $post_list) . '
        AND u.user_id = p.poster_id'
));

$result = $db->sql_query($sql);
 
und ersetzte durch folgendes:

Code: Alles auswählen

// Holding maximum post time for marking topic read
// We need to grab it because we do reverse ordering sometimes
$max_post_time = 0;

$sql = $db->sql_build_query('SELECT', array(
    'SELECT'    => 'u.*, z.friend, z.foe, p.*, pf.user_id, pf.pf_gender',

    'FROM'        => array(
        USERS_TABLE        => 'u',
        POSTS_TABLE        => 'p',
    ),

    'LEFT_JOIN'    => array(
        array(
            'FROM'    => array(ZEBRA_TABLE => 'z'),
            'ON'    => 'z.user_id = ' . $user->data['user_id'] . ' AND z.zebra_id = p.poster_id'
        )
        , array(
            'FROM'    => array(PROFILE_FIELDS_DATA_TABLE => 'pf'),
            'ON'    => 'pf.user_id = p.poster_id'
        )        
    ),

    'WHERE'        => $db->sql_in_set('p.post_id', $post_list) . '
        AND u.user_id = p.poster_id'
));

$result = $db->sql_query($sql);
 
finde etwas später

Code: Alles auswählen

                'online'            => false,
                'avatar'            => ($user->optionget('viewavatars')) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_avatar_width'], $row['user_avatar_height']) : '',
 
und ersetzte durch folgendes:

Code: Alles auswählen

                'online'            => false,
                'avatar'            => ($user->optionget('viewavatars')) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_avatar_width'], $row['user_avatar_height'], $row['user_id'], $row['pf_gender']) : '',
 
finde etwas später

Code: Alles auswählen

                'avatar'        => ($user->optionget('viewavatars')) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_avatar_width'], $row['user_avatar_height']) : '',
                'age'            => '',
 
und ersetzte durch folgendes:

Code: Alles auswählen

                'avatar'        => ($user->optionget('viewavatars')) ? get_user_avatar($row['user_avatar'], $row['user_avatar_type'], $row['user_avatar_width'], $row['user_avatar_height'], $row['user_id'], $row['pf_gender']) : '',
                'age'            => '',
 
Damit wird die Spalte pf_gender mit abgefragt. Ich habe den Code nicht getestet, sollte aber gehen. Wenn es geht, dann musst du noch die memberlist.php anpassen.

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Thyron
Mitglied
Beiträge: 302
Registriert: 09.05.2008 11:59

Re: [Suche] Default Avatar für Gender Mod

Beitrag von Thyron »

Super, also klappen tut das schonmal in der Themenansicht. Die Memberlist und functions_display hab ich auch geändern und mal angepasst so wie ich vermute, dass es richtig is. Habs in der Mitgliederliste aber noch net richtig hinbekommen. Da werden bei mir auch die Avatare angezeigt. Ebenso geht es in den Profilen noch nicht. Aber das is nur noch Anpassungssache. Ich probiere weiter und meld mich dann nochma.
Helmut
Mitglied
Beiträge: 2048
Registriert: 27.12.2002 20:35
Wohnort: Augsburg

Re: [Suche] Default Avatar für Gender Mod

Beitrag von Helmut »

Hallo Thyron,

schön dass es soweit geklappt hat. :wink:

Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Antworten

Zurück zu „[3.0.x] Mod Suche/Anfragen“