Seite 5 von 7
Re: [Suche] Default Avatar für Gender Mod
Verfasst: 07.01.2009 14:54
von Thyron
In den Profilen erscheinen die geschlechtsspezifischen Avatare, in der Mitgliederliste noch nicht.
In der memberlist hab ich nochmal geschaut. Unter prepare profile data is erstmal nichts von Avataren, direkt danach kommt dann im Original aber das, was für die Anzeige in der Mitgliederliste da ist:
Code: Alles auswählen
// Dump it out to the template
return array(
'USER_AVATAR' => get_user_avatar($data['user_avatar'], $data['user_avatar_type'], $data['user_avatar_width'], $data['user_avatar_height']),
'USER_AVATAR_THUMB' => ($data['user_avatar']) ? get_user_avatar($data['user_avatar'], $data['user_avatar_type'], ($data['user_avatar_width'] > $data['user_avatar_height']) ? 25 : (25 / $data['user_avatar_height']) * $data['user_avatar_width'], ($data['user_avatar_height'] > $data['user_avatar_width']) ? 25 : (25 / $data['user_avatar_width']) * $data['user_avatar_height']) : '',
Das habe ich dann so erweitert. Vielleicht is da ein Fehler drin? Sonst muss es an einer fehlenden SQL-Abfrage liegen.
Code: Alles auswählen
// Dump it out to the template
return array(
'USER_AVATAR' => get_user_avatar($data['user_avatar'], $data['user_avatar_type'], $data['user_avatar_width'], $data['user_avatar_height'], $data['user_id'], $data['pf_gender']),
'USER_AVATAR_THUMB' => ($data['user_avatar']) ? get_user_avatar($data['user_avatar'], $data['user_avatar_type'], ($data['user_avatar_width'] > $data['user_avatar_height']) ? 25 : (25 / $data['user_avatar_height']) * $data['user_avatar_width'], ($data['user_avatar_height'] > $data['user_avatar_width']) ? 25 : (25 / $data['user_avatar_width']) * $data['user_avatar_height'], $data['user_id'], $data['pf_gender']) : '',
Deine obige Änderung hab ich gemacht, leider erscheinen die Avatare in den Nachrichten noch nicht. Sicher, dass die Abfrage korrekt ist?
Re: [Suche] Default Avatar für Gender Mod
Verfasst: 07.01.2009 16:50
von Helmut
Hallo Thyron,
für die Anzeige der Userliste probiere mal folgendes:
Öffne die
memberlist.php und finde darin:
und füge folgendes
davor ein
Code: Alles auswählen
if (empty($data['user_avatar']))
{
$sql = 'SELECT *
FROM ' . PROFILE_FIELDS_DATA_TABLE . '
WHERE user_id = ' . (int) $user_id;
$result = $db->sql_query($sql);
$data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
}
Damit sollte auch $data['pf_gender'] den passenden Wert enthalten.
Die Änderung in der ucp_pm_viewmessage.php sollte eigentlich gehen, bei mir läuft sie. Ich hatte das vergessen in meiner Anleitung mit einzufügen und habe es jetzt nachgetragen. Bei mir gibt es nur bei einer ausgewählten PM ein Userinfo Feld auf der rechten Seite, bei den Antworten darauf aber nicht. Hast du auch den Cache geleert?
Die functions_profileviews.php muss ich mir erst noch genauer anschauen, aber auf den ersten Blick müssen da auch die SQL Abfragen rein. Sonst sind die Änderungen ähnlich wie bei der memberlist.php zu machen.
Gruß Helmut
Re: [Suche] Default Avatar für Gender Mod
Verfasst: 07.01.2009 17:32
von Thyron
Jetzt kommt da:
Code: Alles auswählen
Fatal error: Call to a member function sql_query() on a non-object in /kunden/221194_22041/webseiten/forum/memberlist.php on line 2104
Das wäre dann diese (neu eingefügte) Zeile:
PS: Cache habe ich gelöscht, statt des geschlechtsspezifischen Avatars erscheint in den PM's trotzdem nur ein Textlink "Benutzeravatar".
Re: [Suche] Default Avatar für Gender Mod
Verfasst: 07.01.2009 17:58
von Helmut
Hallo Thyron,,
huh ... sollte eigentlich gehen. Gut dann ersetze mal
Code: Alles auswählen
if (empty($data['user_avatar']))
{
$sql = 'SELECT *
FROM ' . PROFILE_FIELDS_DATA_TABLE . '
WHERE user_id = ' . (int) $user_id;
$result = $db->sql_query($sql);
$data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
}
durch
Code: Alles auswählen
if (empty($data['user_avatar']))
{
$sql = 'SELECT *
FROM ' . PROFILE_FIELDS_DATA_TABLE . "
WHERE user_id = $user_id";
$result = $db->sql_query($sql);
$data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
}
Bei den PM's kann ich mir das nicht anschauen, im Testaccount ist keine PM dabei wo ich das sehen kann.
Gruß Helmut
Re: [Suche] Default Avatar für Gender Mod
Verfasst: 07.01.2009 18:22
von Thyron
Dann kommt die gleiche Fehlermeldung. Hab ne PM an den Testaccount geschickt, mit der du es siehst.
Re: [Suche] Default Avatar für Gender Mod
Verfasst: 07.01.2009 19:09
von Helmut
Hallo Thyron,
hab den Fehler gefunden, für die SQL Abfrage muss noch folgendes geändert werden:
Öffne die memberlist.php und finde darin:
Code: Alles auswählen
function show_profile($data)
{
global $config, $auth, $template, $user, $phpEx, $phpbb_root_path;
und ersetze durch folgendes:
Code: Alles auswählen
function show_profile($data)
{
global $db, $config, $auth, $template, $user, $phpEx, $phpbb_root_path;
Ich hatte vergessen dass bei der Abfrage ja bei global noch $db mit gebraucht wird, dann sollte es aber gehen.
Bei dem PM'S probiere mal folgendes: Gib in der ucp_pm_viewmessage.php nach der geänderten SQL Abfrage
echo $user_row['pf_gender']; ein und schaue was da angezeigt wird.
Gruß Helmut
Re: [Suche] Default Avatar für Gender Mod
Verfasst: 07.01.2009 19:23
von Thyron
Brache beides kein Erfolg. In den Nachrichten keine Veränderung. Bei der memberlist is die Fehlermeldung weg, dafür werden bei avatarlosen Usern nun nicht nur keine Gender-Avatare sondern auch keine Beitragszahlen und Wohnorte usw. mehr angezeigt...
Re: [Suche] Default Avatar für Gender Mod
Verfasst: 07.01.2009 20:19
von Helmut
Hallo Thyron,
ok, dann änder mal folgendes ab:
Code: Alles auswählen
if (empty($data['user_avatar']))
{
$sql = 'SELECT *
FROM ' . PROFILE_FIELDS_DATA_TABLE . '
WHERE user_id = ' . (int) $user_id;
$result = $db->sql_query($sql);
$data = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
}
nach
Code: Alles auswählen
if (empty($data['user_avatar']))
{
$sql = 'SELECT *
FROM ' . PROFILE_FIELDS_DATA_TABLE . '
WHERE user_id = ' . (int) $user_id;
$result = $db->sql_query($sql);
$data_pf = $db->sql_fetchrow($result);
$data['pf_gender'] = $data_pf['pf_gender'];
}
Aber jetzt sollte es mit der Userliste gehen .....
Gruß Helmut
Re: [Suche] Default Avatar für Gender Mod
Verfasst: 07.01.2009 22:48
von Thyron
Dann erscheinen die Avatare immer noch nocht
Hab ich die Teile mit user_id und pf_gender beim Avatar Thumb überhaupt richtig eingesetzt? Hab das ja oben gepostet. Vielleicht is da ein Fehler.
Hier is übrigens der Mod dazu. Is eigentlich nur die eine Ergänzung in der Memberlist und eine css-Datei.
Wir können das auch erstmal auf Seite legen. Vielleicht fällt in der Zwischenzeit Mirijam oder jemand andrem ja noch ein Fehler auf. Wenn die Dinger in der Mitgliederliste nicht angezeigt werden, is nicht so dramatisch. In den Nachrichten und der Profilbesucherstatistik wäre wichtiger.
Re: [Suche] Default Avatar für Gender Mod
Verfasst: 08.01.2009 09:33
von Helmut
Hallo Thyron,
also das mit den Nachrichten scheint ein Problem mit der SQL Abfrage zu sein. Probiere mal folgendes aus:
Öffne die
includes/ucp/ucp_pm_viewmessage.php und finde darin die geänderte Abfrage:
Code: Alles auswählen
if (empty($user_row))
{
$sql = 'SELECT *
FROM ' . USERS_TABLE . ' u
LEFT JOIN ' . PROFILE_FIELDS_DATA_TABLE . ' pf
ON pf.user_id = u.user_id
WHERE u.user_id = ' . (int) $user_id;
$result = $db->sql_query($sql);
$user_row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
}
und ersetze sie durch folgendes:
Code: Alles auswählen
if (empty($user_row))
{
$sql = 'SELECT *
FROM ' . USERS_TABLE . '
WHERE user_id = ' . (int) $user_id;
$result = $db->sql_query($sql);
$user_row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
}
$sql = 'SELECT *
FROM ' . PROFILE_FIELDS_DATA_TABLE . '
WHERE user_id = ' . (int) $user_id;
$result = $db->sql_query($sql);
$user_pf = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
finde etwas später:
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['pf_gender']) : '';
und ersetze sie 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_pf['pf_gender']) : '';
Jetzt müsste es aber bei den Nachrichten klappen mit der Anzeige. Ich habe die Abfragen nun getrennt, damit immer diese Tabelle ausgelesen wird.
Die Profilbesucherstatistik ist deutlich schwieriger und mit erheblich mehr Zeitaufwand zu machen, da hier die Abfragen für die Avatare anders aufgebaut sind. Dafür habe ich aber im Augenblick nicht die nötige Zeit.
Warum das bei der Userliste immer noch nicht geht, da bin ich langsam echt überfragt. Bei meinen Versuchen hatte er immer dazu die Felder mit ausgelesen.
Gruß Helmut