Webboard

Pełna wersja: Nie wyświetla domyślnego avatara top shouters
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
wersja skryptu MyBB: 1.8.4
adres forum: xShoot.pl
na czym polega problem (screen, opis, komunikaty, nazwa i wersja wtyczki):
Cześć , tak jak w temacie. Nie wyświetla mi domyślnego avataru w plugine top shouters by GiboneK. Mialem podobny problem dotyczący pluginu Top Posters Today rownierz napisany przez GiboneK i chcialem wyciagnać z tamtąd zmienna na wyświetlanie domyślnego avka lecz nie działa , poprostu plugin dziala bez avatarow.

Prosze o pomoc.
Nie ma w opcjach pluginu na podanie ścieżki do domyślnego awatara?
Po prostu w kodzie pluginu użyj odpowiednio funkcji format_avatar.
Nie rozumiem , możesz jaśniej ? W kodzie pluginu , no tak ale w szablonach globalnych czy w kodzie w .php ? Bo to i to to kod :D
1) Przerzuć wynik z zapytania związany z avatarem przez funkcję format_avatar().
2) Zmienna będzie do szablonu wyglądała następująco:
Kod PHP:
$zmienna['image'
.
Wchodze na githuba , na podany przez ciebie link noi przerzuca mnie na zołte tło , kopiuje ten kod
Kod PHP:
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'];
    }
    if(!
$max_dimensions)
    {
        
$max_dimensions $mybb->settings['maxavatardims'];
    }
    
// An empty key wouldn't work so we need to add a fall back
    
$key $dimensions;
    if(empty(
$key))
    {
        
$key 'default';
    }
    
$key2 $max_dimensions;
    if(empty(
$key2))
    {
        
$key2 'default';
    }
    if(isset(
$avatars[$avatar][$key][$key2]))
    {
        return 
$avatars[$avatar][$key][$key2];
    }
    
$avatar_width_height '';
    if(
$dimensions)
    {
        
$dimensions explode("|"$dimensions);
        if(
$dimensions[0] && $dimensions[1])
        {
            list(
$max_width$max_height) = explode('x'$max_dimensions);
            if(!empty(
$max_dimensions) && ($dimensions[0] > $max_width || $dimensions[1] > $max_height))
            {
                require_once 
MYBB_ROOT."inc/functions_image.php";
                
$scaled_dimensions scale_image($dimensions[0], $dimensions[1], $max_width$max_height);
                
$avatar_width_height "width=\"{$scaled_dimensions['width']}\" height=\"{$scaled_dimensions['height']}\"";
            }
            else
            {
                
$avatar_width_height "width=\"{$dimensions[0]}\" height=\"{$dimensions[1]}\"";
            }
        }
    }
    
$avatars[$avatar][$key][$key2] = array(
        
'image' => htmlspecialchars_uni($mybb->get_asset_url($avatar)),
        
'width_height' => $avatar_width_height
    
);
    return 
$avatars[$avatar][$key][$key2];


Wykonuje zapytanie sql noi wywala mi taki bład http://screenshot.sh/m9loszsS4gtAm

LikeLoveHate

Ten kod co jest zaznaczony, to jest kawałek kodu jakiegoś pluginu, a nie zapytanie SQL...
Ten kod wkleiłeś w zapytanie sql, w phpmyadmin? To tak nie działa.
To jest funkcja, tego nigdzie nie kopiujesz/nie wklejasz. Tutaj pokazane jest jedynie jej działanie. W kodzie pluginu używasz tego tak
Kod PHP:
$favatar format_avatar($avatar); 
$avatar - awatar użytkownika,
$favatar - sformatowany awatar - gotowy do wyświetlenia
Czyli co mam wkoncu zrobic , bo juz nie kumam. Wkleic to do topshout.php ? do źrodla pluginu czy co wkoncu?

co dodac i gdzie ?
Wklej tutaj zawartość pliku pluginu.
Sprawdź czy zadziała:
Kod PHP:
<?php
if(!defined('IN_MYBB'))
{
    die(
'This file cannot be accessed directly.');
}

$plugins->add_hook("index_end""topshout_show");
$plugins->add_hook("portal_end""topshout_show"); 

function 
topshout_info()
{
    global 
$lang$mybb$db;
    
$lang->load("topshout");
    
    return array(
        
"name"        => $lang->name,
        
"description"        => $lang->desc,
        
"website"        => "http://www.mybboad.pl",
        
"author"        => "GiboneKPL & Supryk",
        
"authorsite"        => "http://www.rashownia.pl",
        
"version"        => "1.4.0",
        
"guid"             => "*",
        
"compatibility"    => "18*"
        
);
}


function 
topshout_install()
{
    global 
$mybb$db$lang;
    
$lang->load("topshout");
    
    
$settinggroups = array(
        
'name'             => 'topshout'
        
'title'                 => $db->escape_string($lang->name),
        
'description'     => $db->escape_string($lang->settings_desc),
        
'disporder'         => 100
        
'isdefault'         => 0
    
);
    
$gid $db->insert_query("settinggroups"$settinggroups);
    
$disporder 0;

    
$setting = array(
        
"sid"                    => NULL,
        
"name"            => "topshoutlimit",
        
"title"                => $db->escape_string($lang->settings_limit),
        
"description"    => $db->escape_string($lang->settings_limit_desc),
        
"optionscode"    => "text",
        
"value"                => '5',
        
"disporder"        => $disporder++,
        
"gid"                    => $gid
    
);
    
$db->insert_query("settings"$setting);
    
    
$setting = array(
        
"sid"                    => NULL,
        
"name"            => "topshoutshoutbox",
        
"title"                => $db->escape_string($lang->settings_shoutbox),
        
"description"    => $db->escape_string($lang->settings_shoutbox_desc),
        
"optionscode"    => "select
dvzshoutbox=DVZ Shoutbox
myshoutbox=MyShoutbox
sfshoutbox=SpiceFuse Shoutbox"
,
        
"value"                => 'dvzshoutbox',
        
"disporder"        => $disporder++,
        
"gid"                    => $gid
    
);
    
$db->insert_query("settings"$setting);
    
    
$setting = array(
            
'sid' => 'NULL',
            
'name' => 'topshoutignore',
            
'title' => $db->escape_string($lang->settings_ignore_groups),
            
'description' =>  $db->escape_string($lang->settings_ignore_groups_desc),
            
'optionscode' => 'text',
            
'value' => '5,7',
            
'disporder' => $disporder++,
            
'gid' => $gid
    
);
    
$db->insert_query('settings'$setting);
    
    
$setting = array(
        
"sid"                    => NULL,
        
"name"            => "topshoutcolor",
        
"title"                => $db->escape_string($lang->settings_color),
        
"description"    => $db->escape_string($lang->settings_color_desc),
        
"optionscode"    => "text",
        
"value"                => '#7ba60d',
        
"disporder"        => $disporder++,
        
"gid"                    => $gid
    
);
    
$db->insert_query("settings"$setting);
    
    
$setting = array(
        
"sid"                    => NULL,
        
"name"            => "topshoutcoll",
        
"title"                => $db->escape_string($lang->settings_collapse),
        
"description"    => $db->escape_string($lang->settings_collapse_desc),
        
"optionscode"    => "yesno",
        
"value"                => '1',
        
"disporder"        => $disporder++,
        
"gid"                    => $gid
    
);
    
$db->insert_query("settings"$setting);
    
    
rebuild_settings(); 

    
$template = array(
        
"tid"             => "NULL",
        
"title"         => "topshout",
        
"template"        => $db->escape_string('<style type="text/css">
.top_shout {
display: inline-block;
height: 16px;
line-height: 16px;
padding: 0 5px;
font-size: 9px;
font-weight: bold;
text-transform: uppercase;
color: #fff;
text-shadow: rgba(0,0,0,0.2) 0px -1px 0px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
background-image: url(images/highlight.png);
background-repeat: repeat-x;
background-position: 0 -1px;
}
</style>
                                               
<table border="0" cellspacing="{$theme[borderwidth]}" cellpadding="{$theme[tablespace]}" class="tborder" style="clear: both; border-bottom-width: 0;">
<tr>
<td class="thead" colspan="2">
{$collapse}
<strong>{$lang->name}</strong>
</td>
</tr>
<tbody style="{$expdisplay}" id="shouters_e">
{$topshout_row}
</tbody>
</table>
<br />'
),
        
"sid"             => "-1"
        );
        
$db->insert_query("templates"$template);
        
    
$template = array(
        
"tid"             => "NULL",
        
"title"         => "topshout_row",
        
"template"        => $db->escape_string('<tr><td class="trow2">
{$avatar_s[\'image\']}
{$shout[\'profilelink\']}
<span style="float: right;margin-right: 5px;margin-top: 7px;background: {$color}" class="top_shout">{$shout[\'shouts\']}</span>
</td></tr'
),
        
"sid"             => "-1"
        );
        
$db->insert_query("templates"$template);
}


function 
topshout_is_installed()
{
    global 
$db$lang$mybb;
    
$lang->load("topshout");
    
    
$q $db->simple_select('settinggroups''*''name=\'topshout\'');
    
$group $db->fetch_array($q);
    if(
$group === null || empty($group))
    return 
false;
    return 
true;
}

function 
topshout_uninstall()
{
    global 
$mybb$db$lang;
    
$lang->load("topshout");
    
    
$db->delete_query("settinggroups""name = 'topshout'");
    
$db->delete_query('settings''name LIKE \'%topshout%\'');
    
$db->delete_query('templates''title LIKE (\'%topshout%\')');


function 
topshout_show()
{
    global 
$db$mybb$page$topshout$theme$templates$shout$topshout_row$lang;
    
$lang->load("topshout");
        
    
$gibek_pinek FALSE;
    
    
$ignore_groups $mybb->settings['topshoutignore'];
    if(
$ignore_groups == '')
    {
            
$ignore_groups '9999999';
    }
        
    if(
$mybb->settings['topshoutshoutbox'] == 'dvzshoutbox')
    {
        if (!
$db->table_exists("dvz_shoutbox"))        
        {
            
$topshout_row '<tr><td class="trow2">'.$lang->install_dvz.'</td></tr>';
        }
        else
        {
            
$gibek_pinek TRUE;
            
$query $db->query("SELECT s.uid, u.username, u.usergroup, u.displaygroup, u.uid, u.avatar, count(*) as totalshouts 
                                 FROM "
.TABLE_PREFIX."dvz_shoutbox s
                                    LEFT JOIN "
.TABLE_PREFIX."users u ON (u.uid=s.uid)
                                 WHERE usergroup NOT IN("
.$ignore_groups.")
                                 GROUP BY s.uid 
                                 ORDER BY totalshouts 
                                 DESC LIMIT " 
$mybb->settings['topshoutlimit']);
        }
                             
    }
    elseif(
$mybb->settings['topshoutshoutbox'] == 'myshoutbox')
    {    
        if (!
$db->table_exists("mysb_shouts"))        
        {
            
$topshout_row '<tr><td class="trow2">'.$lang->install_mysb.'</td></tr>';
        }
        else
        {
            
$gibek_pinek TRUE;
            
$query $db->query("SELECT s.uid, u.username, u.usergroup, u.displaygroup, u.uid, u.avatar, count(*) as totalshouts 
                                 FROM "
.TABLE_PREFIX."mysb_shouts s
                                 LEFT JOIN "
.TABLE_PREFIX."users u ON (u.uid=s.uid)
                                 WHERE usergroup NOT IN("
.$ignore_groups.")
                                 GROUP BY s.uid 
                                 ORDER BY totalshouts 
                                 DESC LIMIT " 
$mybb->settings['topshoutlimit']);
        }                             
    }
    elseif(
$mybb->settings['topshoutshoutbox'] == 'sfshoutbox')
    {
        if (!
$db->table_exists("sf_shouts"))        
        {
            
$topshout_row '<tr><td class="trow2">'.$lang->install_sfsb.'</td></tr>';
        }
        else
        {
            
$gibek_pinek TRUE;
            
$query $db->query("SELECT s.uid, u.username, u.usergroup, u.displaygroup, u.uid, u.avatar, count(*) as totalshouts 
                                 FROM "
.TABLE_PREFIX."sf_shouts s
                                 LEFT JOIN "
.TABLE_PREFIX."users u ON (u.uid=s.uid)
                                 WHERE usergroup NOT IN("
.$ignore_groups.")
                                 GROUP BY s.uid 
                                 ORDER BY totalshouts 
                                 DESC LIMIT " 
$mybb->settings['topshoutlimit']);
        }                
    }

    if( 
$gibek_pinek == TRUE )
    {    
        while(
$shout $db->fetch_array($query))
        {
                            
$shout['username'] = format_name($shout['username'], $shout['usergroup'], $shout['displaygroup']);
                            
$shout['profilelink'] = build_profile_link($shout['username'], $shout['uid']);
                            
$shout['shouts'] = $shout['totalshouts']; 
                            
$avatar_s format_avatar($shout['avatar']);
                            
                            
$color $mybb->settings['topshoutcolor'];
                            
                eval(
'$topshout_row .= "'.$templates->get("topshout_row").'";');
        }
    }
    if(
$mybb->settings['topshoutcoll'] == '1')
    {
    
$collapse '<div class="expcolimage"><img src="images/collapse.gif" id="shouters_img" class="expander" alt="{$expaltext}" title="{$expaltext}" /></div>';
    }
    
eval(
'$topshout = "'.$templates->get('topshout').'";');
}
?>
To tak , zastosowałem twoj kod Snake_ noi wygladało to tak: http://screenshot.sh/n9h39RX3hL6MS , no wiec zastosowałem to tak: <img src="{$avatar_s['image']}"/> i wyglada to tak http://screenshot.sh/mKQ1XnqK7hERw xD
Jak zrobic by te avatary wyglądały tak jak w topstats?
Fakt, zapomniałem, że to generuje link.
Dwie opcje:
1) Najwygodniej po prostu ustalić wymiary używając w/w funkcji - format_avatar().
2) ...albo wprowadzić wymiary w <img>.
(30.06.2015, 21:40)Snake_ napisał(a): [ -> ]Sprawdź czy zadziała:
Kod PHP:
<?php
if(!defined('IN_MYBB'))
{
    die(
'This file cannot be accessed directly.');
}

$plugins->add_hook("index_end""topshout_show");
$plugins->add_hook("portal_end""topshout_show"); 

function 
topshout_info()
{
    global 
$lang$mybb$db;
    
$lang->load("topshout");
    
    return array(
        
"name"        => $lang->name,
        
"description"        => $lang->desc,
        
"website"        => "http://www.mybboad.pl",
        
"author"        => "GiboneKPL & Supryk",
        
"authorsite"        => "http://www.rashownia.pl",
        
"version"        => "1.4.0",
        
"guid"             => "*",
        
"compatibility"    => "18*"
        
);
}


function 
topshout_install()
{
    global 
$mybb$db$lang;
    
$lang->load("topshout");
    
    
$settinggroups = array(
        
'name'             => 'topshout'
        
'title'                 => $db->escape_string($lang->name),
        
'description'     => $db->escape_string($lang->settings_desc),
        
'disporder'         => 100
        
'isdefault'         => 0
    
);
    
$gid $db->insert_query("settinggroups"$settinggroups);
    
$disporder 0;

    
$setting = array(
        
"sid"                    => NULL,
        
"name"            => "topshoutlimit",
        
"title"                => $db->escape_string($lang->settings_limit),
        
"description"    => $db->escape_string($lang->settings_limit_desc),
        
"optionscode"    => "text",
        
"value"                => '5',
        
"disporder"        => $disporder++,
        
"gid"                    => $gid
    
);
    
$db->insert_query("settings"$setting);
    
    
$setting = array(
        
"sid"                    => NULL,
        
"name"            => "topshoutshoutbox",
        
"title"                => $db->escape_string($lang->settings_shoutbox),
        
"description"    => $db->escape_string($lang->settings_shoutbox_desc),
        
"optionscode"    => "select
dvzshoutbox=DVZ Shoutbox
myshoutbox=MyShoutbox
sfshoutbox=SpiceFuse Shoutbox"
,
        
"value"                => 'dvzshoutbox',
        
"disporder"        => $disporder++,
        
"gid"                    => $gid
    
);
    
$db->insert_query("settings"$setting);
    
    
$setting = array(
            
'sid' => 'NULL',
            
'name' => 'topshoutignore',
            
'title' => $db->escape_string($lang->settings_ignore_groups),
            
'description' =>  $db->escape_string($lang->settings_ignore_groups_desc),
            
'optionscode' => 'text',
            
'value' => '5,7',
            
'disporder' => $disporder++,
            
'gid' => $gid
    
);
    
$db->insert_query('settings'$setting);
    
    
$setting = array(
        
"sid"                    => NULL,
        
"name"            => "topshoutcolor",
        
"title"                => $db->escape_string($lang->settings_color),
        
"description"    => $db->escape_string($lang->settings_color_desc),
        
"optionscode"    => "text",
        
"value"                => '#7ba60d',
        
"disporder"        => $disporder++,
        
"gid"                    => $gid
    
);
    
$db->insert_query("settings"$setting);
    
    
$setting = array(
        
"sid"                    => NULL,
        
"name"            => "topshoutcoll",
        
"title"                => $db->escape_string($lang->settings_collapse),
        
"description"    => $db->escape_string($lang->settings_collapse_desc),
        
"optionscode"    => "yesno",
        
"value"                => '1',
        
"disporder"        => $disporder++,
        
"gid"                    => $gid
    
);
    
$db->insert_query("settings"$setting);
    
    
rebuild_settings(); 

    
$template = array(
        
"tid"             => "NULL",
        
"title"         => "topshout",
        
"template"        => $db->escape_string('<style type="text/css">
.top_shout {
display: inline-block;
height: 16px;
line-height: 16px;
padding: 0 5px;
font-size: 9px;
font-weight: bold;
text-transform: uppercase;
color: #fff;
text-shadow: rgba(0,0,0,0.2) 0px -1px 0px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
background-image: url(images/highlight.png);
background-repeat: repeat-x;
background-position: 0 -1px;
}
</style>
                                               
<table border="0" cellspacing="{$theme[borderwidth]}" cellpadding="{$theme[tablespace]}" class="tborder" style="clear: both; border-bottom-width: 0;">
<tr>
<td class="thead" colspan="2">
{$collapse}
<strong>{$lang->name}</strong>
</td>
</tr>
<tbody style="{$expdisplay}" id="shouters_e">
{$topshout_row}
</tbody>
</table>
<br />'
),
        
"sid"             => "-1"
        );
        
$db->insert_query("templates"$template);
        
    
$template = array(
        
"tid"             => "NULL",
        
"title"         => "topshout_row",
        
"template"        => $db->escape_string('<tr><td class="trow2">
{$avatar_s[\'image\']}
{$shout[\'profilelink\']}
<span style="float: right;margin-right: 5px;margin-top: 7px;background: {$color}" class="top_shout">{$shout[\'shouts\']}</span>
</td></tr'
),
        
"sid"             => "-1"
        );
        
$db->insert_query("templates"$template);
}


function 
topshout_is_installed()
{
    global 
$db$lang$mybb;
    
$lang->load("topshout");
    
    
$q $db->simple_select('settinggroups''*''name=\'topshout\'');
    
$group $db->fetch_array($q);
    if(
$group === null || empty($group))
    return 
false;
    return 
true;
}

function 
topshout_uninstall()
{
    global 
$mybb$db$lang;
    
$lang->load("topshout");
    
    
$db->delete_query("settinggroups""name = 'topshout'");
    
$db->delete_query('settings''name LIKE \'%topshout%\'');
    
$db->delete_query('templates''title LIKE (\'%topshout%\')');


function 
topshout_show()
{
    global 
$db$mybb$page$topshout$theme$templates$shout$topshout_row$lang;
    
$lang->load("topshout");
        
    
$gibek_pinek FALSE;
    
    
$ignore_groups $mybb->settings['topshoutignore'];
    if(
$ignore_groups == '')
    {
            
$ignore_groups '9999999';
    }
        
    if(
$mybb->settings['topshoutshoutbox'] == 'dvzshoutbox')
    {
        if (!
$db->table_exists("dvz_shoutbox"))        
        {
            
$topshout_row '<tr><td class="trow2">'.$lang->install_dvz.'</td></tr>';
        }
        else
        {
            
$gibek_pinek TRUE;
            
$query $db->query("SELECT s.uid, u.username, u.usergroup, u.displaygroup, u.uid, u.avatar, count(*) as totalshouts 
                                 FROM "
.TABLE_PREFIX."dvz_shoutbox s
                                    LEFT JOIN "
.TABLE_PREFIX."users u ON (u.uid=s.uid)
                                 WHERE usergroup NOT IN("
.$ignore_groups.")
                                 GROUP BY s.uid 
                                 ORDER BY totalshouts 
                                 DESC LIMIT " 
$mybb->settings['topshoutlimit']);
        }
                             
    }
    elseif(
$mybb->settings['topshoutshoutbox'] == 'myshoutbox')
    {    
        if (!
$db->table_exists("mysb_shouts"))        
        {
            
$topshout_row '<tr><td class="trow2">'.$lang->install_mysb.'</td></tr>';
        }
        else
        {
            
$gibek_pinek TRUE;
            
$query $db->query("SELECT s.uid, u.username, u.usergroup, u.displaygroup, u.uid, u.avatar, count(*) as totalshouts 
                                 FROM "
.TABLE_PREFIX."mysb_shouts s
                                 LEFT JOIN "
.TABLE_PREFIX."users u ON (u.uid=s.uid)
                                 WHERE usergroup NOT IN("
.$ignore_groups.")
                                 GROUP BY s.uid 
                                 ORDER BY totalshouts 
                                 DESC LIMIT " 
$mybb->settings['topshoutlimit']);
        }                             
    }
    elseif(
$mybb->settings['topshoutshoutbox'] == 'sfshoutbox')
    {
        if (!
$db->table_exists("sf_shouts"))        
        {
            
$topshout_row '<tr><td class="trow2">'.$lang->install_sfsb.'</td></tr>';
        }
        else
        {
            
$gibek_pinek TRUE;
            
$query $db->query("SELECT s.uid, u.username, u.usergroup, u.displaygroup, u.uid, u.avatar, count(*) as totalshouts 
                                 FROM "
.TABLE_PREFIX."sf_shouts s
                                 LEFT JOIN "
.TABLE_PREFIX."users u ON (u.uid=s.uid)
                                 WHERE usergroup NOT IN("
.$ignore_groups.")
                                 GROUP BY s.uid 
                                 ORDER BY totalshouts 
                                 DESC LIMIT " 
$mybb->settings['topshoutlimit']);
        }                
    }

    if( 
$gibek_pinek == TRUE )
    {    
        while(
$shout $db->fetch_array($query))
        {
                            
$shout['username'] = format_name($shout['username'], $shout['usergroup'], $shout['displaygroup']);
                            
$shout['profilelink'] = build_profile_link($shout['username'], $shout['uid']);
                            
$shout['shouts'] = $shout['totalshouts']; 
                            
$avatar_s format_avatar($shout['avatar']);
                            
                            
$color $mybb->settings['topshoutcolor'];
                            
                eval(
'$topshout_row .= "'.$templates->get("topshout_row").'";');
        }
    }
    if(
$mybb->settings['topshoutcoll'] == '1')
    {
    
$collapse '<div class="expcolimage"><img src="images/collapse.gif" id="shouters_img" class="expander" alt="{$expaltext}" title="{$expaltext}" /></div>';
    }
    
eval(
'$topshout = "'.$templates->get('topshout').'";');
}
?>

Dzisiaj szukałem jak to zrobić. Skopiowałem już twój kod snake, zastąpiłem go w pluginie, a następnie w szablonach globalnych zrobiłem coś takiego :D

Kod:
<tr><td class="trow2">
<img src="{$avatar_s['image']}" alt="" style="float: left;margin-right: 5px;" {$avatar_s['width_height']}/>
    <span style="position: relative; top: 7px">{$shout['profilelink']}</span>
<span style="float: right;margin-right: 5px;margin-top: 7px;background: {$color}" class="top_shout">{$shout['shouts']}</span>
    </td></tr>

Dzięki temu dopasowałem wygląd do innych statystyk :D I wszystko ładnie wygląda