13.10.2005, 15:32
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.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.3. Aktionen bei Aktivierung
Hier werden alle Aktionen aufgeführt, die bei der Aktivierung des Plugins erfolgen.3.1 Templates ändernHier wird das Template "index" geändert. Es wird gesucht nach "\$header(\r?)\n" und ersetzt durch "\$header\n\$overview\n".
3.2 Templates einfügenDas neue Template "index_overview" wird in die Datenbank geschrieben. Der Inhalt der Templates wird hinter ""template" =>" angegeben.
3.3 Einstellungsgruppe erstellenDie Einstellungsgruppe mit dem Namen "Übersicht" wird in der Datenbank angelegt. Die Einstellungsgruppe erscheint dann im Admin-CP unter "Foreneinstellungen" -> "Ändern".
3.4 Einstellungen einfügenMit diesem Schritt wird die Einstellungsgruppe "Ü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 erneuernMit 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.3.1 Templateänderungen zurücksetzenDas 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öschenDas Template "index_overview wird durch diesen Befehl aus der Datenbank gelöscht.
3.3 Einstellungsgruppe löschenZunä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öschenEs werden alle Einstellungen gelöscht, die der im vorigen Schritt ermittelten Gruppen-ID zugeteilt sind.
3.5 Einstellungen erneuernMit diesem Befehl wird die Datei, in der die Einstellungen gespeichert werden (inc/settings.php), neu geschrieben.
4. Funktionen des PluginsIn 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 erneuernWenn 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 durchIm Fall dieses Beispiels würde alsodie Zahl 5 augeben.
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");
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",
);
}
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!
}
PHP-Code:
require "./inc/adminfunctions_templates.php";
find_replace_templatesets("index", '#\$header(\r?)\n#', "\$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);
3.3 Einstellungsgruppe erstellen
PHP-Code:
$overview_group = array(
"gid" => "NULL",
"name" => "Übersicht",
"description" => "",
"disporder" => "1",
"isdefault" => "no",
);
$db->insert_query(TABLE_PREFIX."settinggroups", $overview_group);
$gid = $db->insert_id();
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äge sollen gezeigt werden?",
"optionscode" => "text",
"value" => "5",
"disporder" => "1",
"gid" => intval($gid),
);
$db->insert_query(TABLE_PREFIX."settings", $overview_1);
3.5 Einstellungen erneuern
PHP-Code:
rebuild_settings();
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!
}
PHP-Code:
require "./inc/adminfunctions_templates.php";
find_replace_templatesets("index", '#\$overview(\r?)\n#', "", 0);
3.2 Templates löschen
PHP-Code:
$db->query("DELETE FROM ".TABLE_PREFIX."templates WHERE title='index_overview'");
3.3 Einstellungsgruppe löschen
PHP-Code:
$query = $db->query("SELECT gid FROM ".TABLE_PREFIX."settinggroups WHERE name='Übersicht'");
$g = $db->fetch_array($query);
$db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE gid='".$g['gid']."'");
3.4 Einstellungen löschen
PHP-Code:
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE gid='".$g['gid']."'");
3.5 Einstellungen erneuern
PHP-Code:
rebuild_settings();
4. Funktionen des Plugins
PHP-Code:
function overview() {
// Gobale Variablen
global $db, $mybb, $cache, $templates, $lang, $overview;
// Hier alle Funktionen!
}
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);
}
}
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']
PHP-Code:
echo $mybb->settings['overview_max'];