Webboard

Pełna wersja: Zmienna w Header
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Adres forum:
haxballerz.xaa.pl


Wersja silnika:
1.8


Opis problemu:
Chciałbym w nagłówku umieścić zmienna top reputacji oraz top najbogatszych, jednakże nie działa mi tam ani zwykła zmienna, ani ta {$mybb->user['reputation']}.
A może użyj pluginu TopStats?
No wiadomo, że użyję topstats, jednak jego też nie wyświetli w header. :)
Ja zrobiłbym tak: Zainstalował php in templates, wyciągnął z bazy osobę z najwyższą liczbą reputacji i przypisał to do zmiennej
PRZYKŁAD!
Kod PHP:
$repu SELECT DISTINCT reputation FROM mybb_users ORDER BY reputation DESC LIMIT 1
Pokaż owy kod tych obydwu pluginów, stawiam że wystarczy dodać odpowiedniego hooka aby wyświetlić je w headerze
(27.12.2017, 13:34)Szogi1910 napisał(a): [ -> ]Pokaż owy kod tych obydwu pluginów, stawiam że wystarczy dodać odpowiedniego hooka aby wyświetlić je w headerze

Kod:
<?php
if(!defined("IN_MYBB"))
{
    die("Direct initialization of this file is not allowed.<br /><br />Please make sure IN_MYBB is defined.");
}

$plugins->add_hook("index_end", "najb_start");

function najb_info() // Informacje
{
    return array(
        "name"            => "Najbogatsi!",
        "description"    => "Plugin dodający na stronie głównej listę najbogatszych użytkowników. Wymaga NewPoints!",
        "website"        => "http://www.mybboard.pl",
        "author"        => "Matslom",
        "authorsite"    => "http://webax.pl",
        "version"        => "1.0",
        'guid'        => '*',
        'compatibility'    => '18*'
    );
}


function najb_activate() // Aktywacja
{    
require_once MYBB_ROOT."/inc/adminfunctions_templates.php";

  $returnStatus1 = find_replace_templatesets("index", "#".preg_quote('{$forums}') . "#i", '{$forums}' . "\n" . '{$najb}');


}

function najb_deactivate() // Dezaktywacja
{
require_once MYBB_ROOT."/inc/adminfunctions_templates.php";

  $returnStatus1 = find_replace_templatesets(
  "index", "#".preg_quote('{$forums}' . "\n" . '{$najb}') . "#i",
  '{$forums}',0);
        
}

function najb_start()
{
global $db, $mybb, $page, $najb, $theme, $nwepoints;

/*if ($mybb->settings['newpoints_main_statsvisible'] != 1)
        error('Statystyki sią wyłączone');*/
        
$najb = '<table border="0" cellspacing="1" cellpadding="3" class="tborder" style="margin-bottom:10px;">
<tr>
<td class="thead" colspan="2"><strong>Najbogatsi</strong></td>
</tr>
<tr>
<td class="tcat" width="50%"><strong>Użytkownik</strong></td>
<td class="tcat" width="50%" align="center"><strong>Ilość</strong></td>
</tr>';
        
    $richest_users = '';
    $bgcolor = alt_trow();
    
    $fields = array('uid', 'username', 'newpoints');
    


    // get richest users
    $query_n = $db->query("SELECT username, usergroup, displaygroup, uid, newpoints FROM ".TABLE_PREFIX."users ORDER BY `newpoints`  DESC LIMIT  10 ");
    $query = $db->simple_select('users', implode(',', $fields), '', array('order_by' => 'newpoints', 'order_dir' => 'DESC', 'limit' => 10));
    while($user = $db->fetch_array($query_n)) {
        $bgcolor = alt_trow();
        $usernameFormatted = format_name($user['username'], $user['usergroup'], $user['displaygroup']);
      $username = '<a href="member.php?action=profile&uid='.intval($user['uid']).'"> '.$usernameFormatted.'</a>';
        #$nick = build_profile_link(htmlspecialchars_uni($user['username']), intval($user['uid']));
        $ile = newpoints_format_points($user['newpoints']);
        $najb .= '<tr><td class="trow1" width="50%">'.$username.'</td><td class="trow1" width="50%" align="center">'.$ile.'</td></tr>';
        }
    
$naj .= '</table><br/>';

}
?>
Lista hooków jakie używa mybb - https://docs.mybb.com/1.8/development/plugins/hooks/

Następnie musisz zamiast index_end podmienić na inny, którego można użyć w headerze. Wystarczy że odnajdziesz go w/w wymienionej liście co podałem
Zamienilem na global_end, nic nie dało.
Problem dalej aktualny.
Prędzej użyłbym global_intermediate lub global_start.