MyBB.de Forum

Normale Version: Beim aktivieren eines Plugins Templateveränderung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen!

Ich bin gerade dabei mir mein eigenes Punktesystem für MyBB zu scripten. Big Grin Leider komme ich an einer Stelle nicht mehr weiter: Wenn ich das Plugin aktivieren, soll eine Templateveränderung in "member_profile" durchgeführt werden. Dies gelingt mir ab und zu aber ich bekomme sie beim deaktivieren nicht mehr weg. Kann mir da jemand helfen (auch bei der Änderung bei aktivieren), wie geht das? Ach und noch was: Wenn ich dort im Template eine von mir definierte Variable einbaue, zum Beispiel "$punkte", wie weise ich diese Variable dann über das Plugin einen Wert zu? Würde mich freuen, wenn ihr meine Fragen beantworten könnt!

Gruß, Henning
Kannst du den entsprechenden Code aus deinem Plugin posten?
Das ist der wichtigste Teil. Den Info-Teil habe ich mal weg gelassen. Das mit dem einfügen in das Template habe ich gerade hinbekommen. Wenn ich nun zum Beispiel {$punkte} einfüge, wie kann ich dieser Variable einen Wert zu ordnen? Ich will, dass in der einen hinzugefügten Zelle, die Punkte aus der Datenbank setehen.

PHP-Code:
function punktesystem_install()
{
    global 
$db;
    
$db->write_query("ALTER TABLE `".TABLE_PREFIX."users` ADD `punkte` INT(10) NULL DEFAULT '100';");
}

function 
punktesystem_is_installed()
{
    global 
$db;
    if(
$db->num_rows($db->query("SHOW COLUMNS FROM `".TABLE_PREFIX."users` LIKE 'punkte';")) != 0)
    {
        return 
true;
    }
    return 
false;
}

function 
punktesystem_uninstall()
{
    global 
$db;
    
$db->write_query("ALTER TABLE `".TABLE_PREFIX."users` DROP `punkte`;");
}

function 
punktesystem_activate()

{
    require 
"../inc/adminfunctions_templates.php";
    
find_replace_templatesets("member_profile"'#{\$warning_level}#''{\$warning_level}<tr><td class="trow1"><strong>Punkte:</strong></td><td class="trow1">xxxxxxx</td></tr>');
}

function 
punktesystem_deactivate()

{
    require 
"../inc/adminfunctions_templates.php";    
    
find_replace_templatesets("member_profile"'#<tr><td class="trow1"><strong>Punkte:</strong></td><td class="trow1">xxxxxxx</td></tr>#'''0);
}
    
find_replace_templatesets("member_profile"'#'.preg_quote('{punktesystem}').'#'''0);
}

function 
punktesystem_thread()
{
    global 
$db$mybb;
    
$query $db->simple_select('users''punkte'"uid='".$mybb->user['uid']."'"1);
    
$row $db->fetch_array($query);
    
$neu = array(
        
'punkte'    => $row["punkte"] + 15
    
);
    
$db->update_query('users'$neu"uid='".$mybb->user['uid']."'"1);
}

function 
punktesystem_reply()
{
    global 
$db$mybb;
    
$query $db->simple_select('users''punkte'"uid='".$mybb->user['uid']."'"1);
    
$row $db->fetch_array($query);
    
$neu = array(
        
'punkte'    => $row["punkte"] + 10
    
);
    
$db->update_query('users'$neu"uid='".$mybb->user['uid']."'"1);

Du musst eine Funktion des Plugins an einem Hook ausführen, der vor dem Laden des Templates ausgeführt wird, in dem sich die Variable befindet. In der Funktion musst du dann $punkte definieren und die Variable bei den Globals der Funktion aufnehmen.