Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.37 veröffentlicht (04.11.23)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Wie ist ein Plugin aufgebaut?
#1
Im folgenden wird erklärt, aus welchen Teilen ein Plugin für das MyBB besteht. Als Beispiel dient das Plugin "Übersicht", aus dessen Code einzelne Teile zur Erklärung aufgeführt werden.

1. Benötigte Daten für das Plugin-System
Hier wird festgelegt, an welchem Haken ("Hook") das Plugin ausgeführt und welches Plugin integriert wird.
PHP-Code:
$plugins->add_hook("index_start""overview"); 
In diesem Fall wird das Plugin "overview" am Haken "index_start" eingesetzt.

2. Informationen zum Plugin
Hier werden Informationen, wie Name, Verfasser, usw. angegeben, die später im Plugin-Manager angezeigt werden.
PHP-Code:
function overview_info()
{
    return array(
        
"name"        => "Übersicht",
        
"description" => "Fügt eine Übersichtsbox auf der Startseite ein, die über neueste Mitglieder, Themen und Beiträge informiert.",
        
"website"     => "https://www.mybb.de",
        
"author"      => "MyBBoard.de",
        
"authorsite"  => "https://www.mybb.de",
        
"version"     => "1.2",
        );

3. Aktionen bei Aktivierung
Hier werden alle Aktionen aufgeführt, die bei der Aktivierung des Plugins erfolgen.
PHP-Code:
function overview_activate() {
// Gobale Variablen
global $db;

// Hier alle Aktionen!

3.1 Templates ändern
PHP-Code:
require "./inc/adminfunctions_templates.php";
    
find_replace_templatesets("index"'#\$header(\r?)\n#'"\$header\n\$overview\n"); 
Hier wird das Template "index" geändert. Es wird gesucht nach "\$header(\r?)\n" und ersetzt durch "\$header\n\$overview\n".

3.2 Templates einfügen
PHP-Code:
$templatearray = array(
        
"tid" => "NULL",
        
"title" => "index_overview",
        
"template" => "<table width=\"100%\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\" class=\"tborder\"><tr><td colspan=\"3\"><table  border=\"0\" cellspacing=\"0\" cellpadding=\"3\" width=\"100%\"><tr class=\"thead\"><td><strong>\$lang->overview_overview</strong></td></tr></table></td>
  </tr>
  <tr>
      \$column_newmembers
      \$column_newthreads
      \$column_newposts
      </tr>
</table>\$overview_copyright<br />"
,
        
"sid" => "-1",
        );
        
$db->insert_query(TABLE_PREFIX."templates"$templatearray); 
Das neue Template "index_overview" wird in die Datenbank geschrieben. Der Inhalt der Templates wird hinter ""template" =>" angegeben.

3.3 Einstellungsgruppe erstellen
PHP-Code:
$overview_group = array(
        
"gid" => "NULL",
        
"name" => "&Uuml;bersicht",
        
"description" => "",
        
"disporder" => "1",
        
"isdefault" => "no",
        );
    
$db->insert_query(TABLE_PREFIX."settinggroups"$overview_group);
    
$gid $db->insert_id(); 
Die Einstellungsgruppe mit dem Namen "&Uuml;bersicht" wird in der Datenbank angelegt. Die Einstellungsgruppe erscheint dann im Admin-CP unter "Foreneinstellungen" -> "Ändern".

3.4 Einstellungen einfügen
PHP-Code:
$overview_1 = array(
        
"sid" => "NULL",
        
"name" => "overview_max",
        
"title" => "Anzahl der zu zeigenden Benutzer/Themen",
        
"description" => "Wie viele Benutzer/Themen/Beitr&auml;ge sollen gezeigt werden?",
        
"optionscode" => "text",
        
"value" => "5",
        
"disporder" => "1",
        
"gid" => intval($gid),
        );
    
$db->insert_query(TABLE_PREFIX."settings"$overview_1); 
Mit diesem Schritt wird die Einstellungsgruppe "&Uuml;bersicht" mit Einstellungen gefüllt. In diesem Fall wird die Einstellung "Wie viele Benutzer/Themen/Beiträge sollen gezeigt werden?" angelegt. Dabei wird zur Eingabe der Daten ein Textfeld angeboten und der Standardwert ist 5. Der Name der Einstellung ist "overview_max" und diese wird in der Einstellungsgruppe als erste Einstellung angezeigt.

3.5 Einstellungen erneuern
PHP-Code:
rebuild_settings(); 
Mit diesem Befehl wird die Datei, in der die Einstellungen gespeichert werden (inc/settings.php), neu geschrieben und die neue Einstellungsgruppe mit den neuen Einstellungen wird ind die Datei übernommen.

Aktionen bei Deaktivierung
Hier werden alle Aktionen aufgeführt, die bei der Deaktivierung des Plugins erfolgen.
PHP-Code:
function overview_deactivate() {
// Gobale Variablen
global $db;

// Hier alle Aktionen!

3.1 Templateänderungen zurücksetzen
PHP-Code:
require "./inc/adminfunctions_templates.php";
    
find_replace_templatesets("index"'#\$overview(\r?)\n#'""0); 
Das Prinzip entspricht dem Vorgehen bei der Templateänderung während der Aktivierung. Im Template "index" wird gesucht nach "\$overview(\r?)\n". Dieser Teil wird entfernt, da er duch nichts ersetzt wird.

3.2 Templates löschen
PHP-Code:
$db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title='index_overview'"); 
Das Template "index_overview wird durch diesen Befehl aus der Datenbank gelöscht.

3.3 Einstellungsgruppe löschen
PHP-Code:
$query $db->query("SELECT gid FROM ".TABLE_PREFIX."settinggroups WHERE name='&Uuml;bersicht'");
    
$g $db->fetch_array($query);
    
$db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE gid='".$g['gid']."'"); 
Zunächst wird die Gruppen-ID ("gid") der Einstellungsgruppe ermittelt. Anschließend wird die Gruppe anhand der ID in der Datenbankk gelöscht.

3.4 Einstellungen löschen
PHP-Code:
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE gid='".$g['gid']."'"); 
Es werden alle Einstellungen gelöscht, die der im vorigen Schritt ermittelten Gruppen-ID zugeteilt sind.

3.5 Einstellungen erneuern
PHP-Code:
rebuild_settings(); 
Mit diesem Befehl wird die Datei, in der die Einstellungen gespeichert werden (inc/settings.php), neu geschrieben.

4. Funktionen des Plugins
PHP-Code:
function overview() {
// Gobale Variablen
global $db$mybb$cache$templates$lang$overview;

// Hier alle Funktionen!

In diesen Teil wird der PHP-Code eingefügt, der ausgeführt werden soll. Da dieser je nach Aufgabe des Plugins verschieden ist, werden hier keine Beispiele gegeben.

5. Funktion: Einstellung erneuern
PHP-Code:
if(!function_exists("rebuild_settings"))
{
    function 
rebuild_settings()
    {
        global 
$db;
        
$query $db->query("SELECT * FROM ".TABLE_PREFIX."settings ORDER BY title ASC");
        while(
$setting $db->fetch_array($query))
        {
            
$setting['value'] = addslashes($setting['value']);
            
$settings .= "\$settings['".$setting['name']."'] = \"".$setting['value']."\";\n";
        }
        
$settings "<?php\n/*********************************\ \n  DO NOT EDIT THIS FILE, PLEASE USE\n  THE SETTINGS EDITOR\n\*********************************/\n\n$settings\n?>";
        
$file fopen("./inc/settings.php""w");
        
fwrite($file$settings);
        
fclose($file);
    }

Wenn während der Aktivierung oder Deaktivierung die Einstellungen erneuert werden müssen, muss am Ende des Plugins der oben genannte Code eingefügt werden, der die Anweisung ausführt.

Ich hoffe, dass dieses Tutorial einen guten Überblick darüber verschafft, wie das Plugin-System des MyBB funktioniert und wie ein Plugin aufgebaut ist.

Noch ein Hinweis: Einstellungen des MyBB werden im PHP-Code aufgerufen durch
PHP-Code:
$mybb->settings['Einstellungsname'
Im Fall dieses Beispiels würde also
PHP-Code:
echo $mybb->settings['overview_max']; 
die Zahl 5 augeben.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren


Nachrichten in diesem Thema
Wie ist ein Plugin aufgebaut? - von Michael - 13.10.2005, 16:32
RE: Wie ist ein Plugin aufgebaut? - von Jan - 01.05.2007, 13:22
RE: Wie ist ein Plugin aufgebaut? - von Michael - 01.05.2007, 13:39
RE: Wie ist ein Plugin aufgebaut? - von Jan - 01.05.2007, 13:46
RE: Wie ist ein Plugin aufgebaut? - von StefanT - 14.11.2008, 18:14
RE: Wie ist ein Plugin aufgebaut? - von Michael - 16.11.2008, 01:24
RE: Wie ist ein Plugin aufgebaut? - von Michael - 16.11.2008, 21:03