Webboard

Pełna wersja: Problem z własnym pluginem wyświetlającym grupy
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Cześć. Dzisiaj wziąłem się za własny plugin, który wyświetla listę grup na stronie głównej. Problem jest taki że nie wyświetla tych grup a forum nie działa.

Kod:
<?
if (!defined('IN_MYBB'))
{
die('Direct initialization of this file is not allowed.');
}

function viewGroups_info()
{
return array(
'name' => 'x',
'description' => 'x',

'website' => 'x',
'author' => 'x',
'authorsite' => 'x',
'version' => 'x',

'compatibility' => '18*'
);
}

// Variables - global
$plugins -> add_hook('index_global', 'viewGroups_index');
//$plugins -> run_hooks('index_global');

// Functions - global
function viewGroups_global()
{
global $db;

$query=$db->query('SELECT * FROM mybb_usergroups');

while($result=$db->fetch_array($query)) {
$group_format = str_replace('{username}', $result['title'], $result['namestyle']);

$groups .= $group_format . ' | ';
}
}

eval("\$viewGroups = \"".$templates->get("viewGroups")."\";");
output_page($viewGroups);
?>

Proszę o pomoc.
Aha..

//To była odpowiedź adekwatna do przedstawionej sytuacji.
Jakiś błąd Ci wyskakuje albo cokolwiek?
Żadnego błędu nie ma po prostu forum nie otwiera się. Obsługę błędów włączyłem i także mi nie pokazuje. Ale z tego co widzę problem powoduje:

Kod:
eval("\$viewGroups = \"".$templates->get("viewGroups")."\";");
output_page($viewGroups);
Szablon viewGroups w szablonach globalnych masz dodany? Jak tak to pokaz jego zawartość. Musisz też zglobalizowac zmienne $templates, $groups oraz nie potrzebna jest funkcja 
Kod:
output_page($viewGroups);
[Obrazek: Ie3BAVP.png]
Powinieneś bardziej się przyłożyć do estetyki kodu, wtedy jest łatwiej odnaleźć błąd.

Używasz hooka, który nie istnieje (lista tutaj) i funkcja również.
(11.12.2017, 20:18)maxerxxl napisał(a): [ -> ]Problem jest taki że nie wyświetla tych grup a forum nie działa
Forum działa. Nie używaj tutaj funkcji output_page(), bo zwraca Ci zmienną do której przypisany jest szablon (nie będący strukturą HTML), w którym jest zmienna "niewidoczna dla niego", stąd pusta strona.

Odnośnie zapytania, to raczej nie ma sensu pobierać wszystkich pól, skoro tylko 2 są Ci potrzebne. Do tego zaleca się stosowanie TABLE_PREFIX, bądź $db->table_prefix w celu odniesienia do prefixu tabeli.

Kod PHP:
<?
if (!defined('IN_MYBB'))
{
    die(
'Direct initialization of this file is not allowed.');
}

// Variables - global
$plugins->add_hook('index_start''viewGroups_index');

function 
viewGroups_info()
{
    return [
        
'name' => 'x',
        
'description' => 'x',
        
'website' => 'x',
        
'author' => 'x',
        
'authorsite' => 'x',
        
'version' => 'x',
        
'compatibility' => '18*'
    
];
}

// jeszcze funkcje aktywacji / dezaktywacji itd jeśli potrzeba

// Functions - global
function viewGroups_index()
{
    global 
$db$templates$groups$viewGroups;

    
$query $db->query("SELECT title, namestyle FROM " TABLE_PREFIX "usergroups");

    while(
$result $db->fetch_array($query)) {
        
$group_format str_replace('{username}'htmlspecialchars_uni($result['title'], $result['namestyle']));
        
$groups .= $group_format ' | ';
    }
    eval(
"\$viewGroups = \"".$templates->get("viewGroups")."\";");


Zmienna do użycia w szablonie index - {$viewGroups}.