MyBB.de Forum

Normale Version: Verschiedene Standard-Avatare in verschiedenen Themes
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo ihr Lieben,

ich stehe mal wieder vor etwas, das ich nicht selbst gelöst bekomme. Und zwar hat das mybb 1.8.3 ja die tolle Funktion, dass man über Konfiguration > Foreneinstellung > Profil ein Standard-Avatar für diejenigen einstellen kann, die kein Avatar haben. Das funktioniert mit einer URL, (in meinem Fall images/.WORLD/default_avatar.png) auch sehr gut.

Allerdings wird dann in jedem einzelnen Theme/Design logischerweise das gleiche Standard-Avatar angezeigt. Was ich jetzt gerne hätte wäre, dass man in Theme A Avatar A sieht, in Theme B Avatar B und so weiter.
Probiert hab ich es schon mit folgenden drei Alternativen, die aber nicht geklappt haben:
  • {$theme['imgdir']}/default_avatar.png
  • {$theme}/default_avatar.png
  • {theme}/default_avatar.png
Hat noch jemand eine andere Idee?

Liebe Grüße,
Shanee
Hi,
die Variable $theme wird da nicht ausgewertet, da diese nach der Abfrage des Pfades escaped wird.

Du müsstest dir ggf. ein Plugin bauen wo man in jedem Theme den Avatar angibt oder ähnliches.
Du könntest mal dieses Plugin ausprobieren. Vielleicht funktioniert es damit.
Zitat:Hinweis 2: Das Plugin weist Gästen und Benutzern ohne Avatar automatisch im Postbit einen Standard-Avatar zu.
Danke ihr beiden für die rasche Antwort. Leider war das Plugin nicht das, was ich gesucht hab und die anderen Plugins, die ich bislang gefunden habe, waren alle noch für 1.6.x bzw. arbeiten auch nur mit einem Avatar für alle Themes. Aber da lässt sich sicher noch was finden Smile

Liebe Grüße,
Shanee
Du könntest mit dem Plugin "PHP in Templates" arbeiten, allerdings müsstest du die entsprechenden Templates der einzelnen Themes alle manuell anpassen.
_________________
EDIT: andere Variante (weniger aufwändig, dafür Core Eingriffe notwendig)

Anpassung der /inc/functions.php

Suche:
PHP-Code:
function format_avatar($avatar$dimensions ''$max_dimensions '')

{
    global 
$mybb;
    static 
$avatars;

    if(!isset(
$avatars))
    {
        
$avatars = array();
    }

    if(!
$avatar)
    {
        
// Default avatar
        
$avatar $mybb->settings['useravatar'];
        
$dimensions $mybb->settings['useravatardims'];
    } 

Ersetze den Teil durch:
PHP-Code:
function format_avatar($avatar$dimensions ''$max_dimensions '')
{
    global 
$mybb$theme;
    static 
$avatars;

    if(!isset(
$avatars))
    {
        
$avatars = array();
    }

    if(!
$avatar)
    {
        
// Default avatar
        
if (empty($mybb->settings['useravatar'])){
            
$avatar $theme['imgdir']."/default_avatar.png";
        } else {
            
$avatar $mybb->settings['useravatar'];
        }
        
$dimensions $mybb->settings['useravatardims'];
    } 

Lösche im ACP in Einstellungen > Profil den Pfad zum Standard-Avatar, so dass das Feld leer ist und speichere die Settings.

Jetzt wird der Standard-Avatar (default_avatar.png) aus dem jeweiligen Theme Image Ordner geladen.

In der ACP Benutzer Übersicht wird der Standard-Avatar allerdings leider nicht mehr dargestellt.
Oh wow, vielen Dank für deine Mühe! Ich werd das im Laufe des Tages gleich mal ausprobieren Smile Danke!
Das funktioniert wunderbar  Smile

Einziger Nachteil ist nun, dass in der Benutzerübersicht im ACP jeweils ein kaputtes Bild angezeigt wird. Beim Versuch, das Standardavatar auch dort angezeigt zu bekommen, bin ich leider gescheitert.

Der Teil, um den es in der admin/modules/user/users.php  gehen müsste, ist folgender:

PHP-Code:
            if($user['avatar'] && my_substr($user['avatar'], 07) !== 'http://' && my_substr($user['avatar'], 08) !== 'https://')
            {
                
$user['avatar'] = "../{$user['avatar']}";
            }
            if(
$view['view_type'] == "card")
            {
                
$scaled_avatar fetch_scaled_avatar($user8080);
            }
            else
            {
                
$scaled_avatar fetch_scaled_avatar($user3434);
            }
            if(!
$user['avatar'])
            {
                
$user['avatar'] = "../".$mybb->settings['useravatar'];
            }
            
$user['view']['avatar'] = "<img src=\"".htmlspecialchars_uni($user['avatar'])."\" alt=\"\" width=\"{$scaled_avatar['width']}\" height=\"{$scaled_avatar['height']}\" />"

Weiss hier vielleicht jemand Rat?
Da du in den Settings keinen Standard-Avatar mehr eingetragen hast, müsstest du diese Zeile ändern:

PHP-Code:
$user['avatar'] = "../".$mybb->settings['useravatar']; 
 
zB. in:


PHP-Code:
$user['avatar'] = "../images/default_avatar.png"
Vielen Dank  Big Grin
So einfach kann's manchmal sein.

Für alle, die diese kleine Änderung auch gerne vornehmen wollen - die Zeile kommt 2x in der Datei vor.