Andreas
09.08.2007, 17:37
Was sind Plugins?
Plugins sind ein mit vBulletin 3.5 eingeführtes Konzept zur einfachen Erweiterung/Veränderung der Funktionalität von vBulletin.
Es handelt sich hierbei um kleine Abschnitte PHP Code die innerhalb von vBulletin ausgeführt werden.
An vielen Stellen in vBulletin sind hierfür Einstiegspunkte (Hooks) vorhanden. Der Name eines Einstiegspunkts bestimmt dabei an welcher Stelle der Code ausgeführt wird.
Wozu sind Plugins nützlich?
Mit Hilfe von Plugins kann man, wie bereits erwähnt, in großem die Funktionalität von vBulletin erweitern.
Der große Vorteil hierbei ist, dass man entgegen klassicher "Hacks" keine Änderungen an den Dateien vornehmen muss.
Plugin-basierende Modifikationen lassen sich somit ohne direkten Zugriff auf die Dateien verwalten, bleiben auch bei einem Update erhalten und müssen nicht neu installiert werden.
Es kann alllerdings vorkommen dass bei einem Update bisher installierte Plugins nicht mehr funktionieren und daher ein Update der Modifikation nötig ist. Dies ist aber eher selten der Fall.
Das heißt es gibt seit vBulletin 3.5 keine Modifikationen mit Dateiänderungen mehr
Nein, das ist nicht der Fall. Zwar lassen sich mit Plugins sehr viele Modifikationen allein durch Plugins realisieren, aber nicht immer. Mitunter gibt es einfach keine geeigneten Einstiegspunkte um das gewünschte Verhalten zu erreichen - dann muss man nach wie vor den Code direkt ändern.
Auch wenn Datenbankabfragen (Queries) geändert werden müssen, ist es häufiger erforderlich Dateiänderungen durchzuführen.
Für einige sehr "populäre" Datenbankabfragen (z.B. in showthread.php, forumdisplay.php, etc.) gibt es spezielle Variablen ($hook_query_fields, $hook_query_joins, $hook_query_where) nebst entsprechender Einsteigspunkte (xxx_query_yyy) um die entsprechenden Abfragen zu erweitern/modifizieren.
Was sind die Nachteile von Plugins?
Plugins ermöglichen eine sehr einfach Erweiterbarkeit und Wartung von vBulletin. Diese Fexlibilität hat allerdings auch einen gewissen Preis: Performance.
Zum einen werden alle Plugins bei jedem Seiteiaufruf in den Speichern gelden (unabhängig davon ob sie ausgeführt werden oder nicht), zum anderen wird der Code über eine recht langsame Funktion (eval()) ausgeführt.
Im Regelfall führt dies nicht zu Problemen, bei sehr großen Foren mit vielen Plugins sollte man allerdings durchaus darauf achten diese zu optimieren.
Eine Möglichkeit hierbei ist den eigentlichen Code in include-Dateien zu schreiben und in die Plugins lediglich eine include()-Anweisung.
Wie erstelle ich Plugins?
Das erstellen von Plugins ist sehr einfach:
Man klickt im Administrator-Kontrollzentrum auf Plugins & Produkte, Plugin hinzufügen.
Im daraufhin erscheinenden Dialogfenster wählt man den Einsteigspunkt, das Produkt zu dem das Plugin gehört, gibt eine Bezeichnung ein und schließlich den auszuführenden Code.
In vBulletin 3.6 kann man zusätzliche eine Ausführungs-Priorität angeben, diese ist aber im Regelfall nicht von Bedeutung: Lediglich dann wenn für einen Einstiegspunkt mehrere Plugins ausgeführt werden sollen und die Reihenfolge der Ausführung wichtig ist, muss diese Möglichkeit genutzt werden.
Wie finde ich den richtigen Einstiegspunkt?
Dies lässt sich leider nicht allgemein beantworten, zu unterschiedlich sind die möglichen Problemstellungen.
Dine einzige Antwort die man hier vielleicht geben könnte ist: Erfahrung.
Vielfach geben jedoch bereits die Bezeichner der Einsteigspunkte einen Hinweis drauf, an welcher Stelle sich diese befinden und sich somit für die Implementeirung der gewünschten Funktion(en) eignen.
vBulletin zeigt ab Version 3.6.6 hierzu bei aktiviertem Debug/Entwicklermodus im Footer jeder Seite an, welche Einsteigspunkte aufgerufen wurden und ob dort Code ausgeführt wurde.
Diese Informationen sind sehr nützlich um sie den Datenfluss zu veranschaulichen.
Wenn der benötigte Einsteigspunkt lokalisiert ist, empfiehlt es sich einen Blick in den umgebenden Quelltext zu werfen um dies zu bestätigen, die verfügbaren Variaablen/Objekte zu ermitteln, etc.
Wie kann ich Plugins weitergeben/veröffentlichen?
Das Administrator-Kontrollzentrum bietet unter dem Menüpunkt Plugins & Produkte, Plugins herunterladen die Möglichkeit, verschiedene Plugins auszuwählen und diese als XML-Datei herunterladen.
Im Normalfall wird man jedoch ein Produkt erstellen und dieses exportieren; das so entstehende XML enthält dann alle Plugins des jeweiligen Produkts
Und wie installiere ich Plugins?
Reine Plugin-XML-Dateien sind aus vorstehendem Grund eher selten, meist hat man es mit Produkt-XML-Dateien zu tun.
Hier im Forum werden (zumindest von mir) häufig Plugins in der Form
Einstiegspunkt
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
gepostet. Dies bedeutet dass man einfach ein Plugin für den genannten Einstiegspunkt erstellt und den geposteten Code hineinkopiert.
Ein Plugin verursacht Fehler, was kann ich tun?
Für diesen Fall gibt es mehrere Möglichkeiten
Das fehlerhafte Plugin ist bekannt, die Nutzung des ACP ist möglich
Dann kann man das betreffende Plugin einfach unter Plugins & Produkte, Plugins verwalten deaktivieren
Es ist nicht bekannt welches Plugin den Fehler verursacht, das ACP funktioniert aber
In diesem Fall kann man das komplette Plugin-System unter vBulletin Einstellungen / Plug-In System deaktivieren
Ein Zugriff auf das ACP ist aufgrund von Fehlern nicht mehr möglich
In diesem Fall benötigt man FTP/SSH/etc. Zugriff auf die Datei config.php im Verzeichnis includes.
In diese Datei schreibt man dann
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
Dies erzwingt eine Deaktivierung des Plug-In Systems
Ergänzungen/Kommentare sind erwünscht, aber bitte keine Fragen! Das ist der falsche Platz hier
Plugins sind ein mit vBulletin 3.5 eingeführtes Konzept zur einfachen Erweiterung/Veränderung der Funktionalität von vBulletin.
Es handelt sich hierbei um kleine Abschnitte PHP Code die innerhalb von vBulletin ausgeführt werden.
An vielen Stellen in vBulletin sind hierfür Einstiegspunkte (Hooks) vorhanden. Der Name eines Einstiegspunkts bestimmt dabei an welcher Stelle der Code ausgeführt wird.
Wozu sind Plugins nützlich?
Mit Hilfe von Plugins kann man, wie bereits erwähnt, in großem die Funktionalität von vBulletin erweitern.
Der große Vorteil hierbei ist, dass man entgegen klassicher "Hacks" keine Änderungen an den Dateien vornehmen muss.
Plugin-basierende Modifikationen lassen sich somit ohne direkten Zugriff auf die Dateien verwalten, bleiben auch bei einem Update erhalten und müssen nicht neu installiert werden.
Es kann alllerdings vorkommen dass bei einem Update bisher installierte Plugins nicht mehr funktionieren und daher ein Update der Modifikation nötig ist. Dies ist aber eher selten der Fall.
Das heißt es gibt seit vBulletin 3.5 keine Modifikationen mit Dateiänderungen mehr
Nein, das ist nicht der Fall. Zwar lassen sich mit Plugins sehr viele Modifikationen allein durch Plugins realisieren, aber nicht immer. Mitunter gibt es einfach keine geeigneten Einstiegspunkte um das gewünschte Verhalten zu erreichen - dann muss man nach wie vor den Code direkt ändern.
Auch wenn Datenbankabfragen (Queries) geändert werden müssen, ist es häufiger erforderlich Dateiänderungen durchzuführen.
Für einige sehr "populäre" Datenbankabfragen (z.B. in showthread.php, forumdisplay.php, etc.) gibt es spezielle Variablen ($hook_query_fields, $hook_query_joins, $hook_query_where) nebst entsprechender Einsteigspunkte (xxx_query_yyy) um die entsprechenden Abfragen zu erweitern/modifizieren.
Was sind die Nachteile von Plugins?
Plugins ermöglichen eine sehr einfach Erweiterbarkeit und Wartung von vBulletin. Diese Fexlibilität hat allerdings auch einen gewissen Preis: Performance.
Zum einen werden alle Plugins bei jedem Seiteiaufruf in den Speichern gelden (unabhängig davon ob sie ausgeführt werden oder nicht), zum anderen wird der Code über eine recht langsame Funktion (eval()) ausgeführt.
Im Regelfall führt dies nicht zu Problemen, bei sehr großen Foren mit vielen Plugins sollte man allerdings durchaus darauf achten diese zu optimieren.
Eine Möglichkeit hierbei ist den eigentlichen Code in include-Dateien zu schreiben und in die Plugins lediglich eine include()-Anweisung.
Wie erstelle ich Plugins?
Das erstellen von Plugins ist sehr einfach:
Man klickt im Administrator-Kontrollzentrum auf Plugins & Produkte, Plugin hinzufügen.
Im daraufhin erscheinenden Dialogfenster wählt man den Einsteigspunkt, das Produkt zu dem das Plugin gehört, gibt eine Bezeichnung ein und schließlich den auszuführenden Code.
In vBulletin 3.6 kann man zusätzliche eine Ausführungs-Priorität angeben, diese ist aber im Regelfall nicht von Bedeutung: Lediglich dann wenn für einen Einstiegspunkt mehrere Plugins ausgeführt werden sollen und die Reihenfolge der Ausführung wichtig ist, muss diese Möglichkeit genutzt werden.
Wie finde ich den richtigen Einstiegspunkt?
Dies lässt sich leider nicht allgemein beantworten, zu unterschiedlich sind die möglichen Problemstellungen.
Dine einzige Antwort die man hier vielleicht geben könnte ist: Erfahrung.
Vielfach geben jedoch bereits die Bezeichner der Einsteigspunkte einen Hinweis drauf, an welcher Stelle sich diese befinden und sich somit für die Implementeirung der gewünschten Funktion(en) eignen.
vBulletin zeigt ab Version 3.6.6 hierzu bei aktiviertem Debug/Entwicklermodus im Footer jeder Seite an, welche Einsteigspunkte aufgerufen wurden und ob dort Code ausgeführt wurde.
Diese Informationen sind sehr nützlich um sie den Datenfluss zu veranschaulichen.
Wenn der benötigte Einsteigspunkt lokalisiert ist, empfiehlt es sich einen Blick in den umgebenden Quelltext zu werfen um dies zu bestätigen, die verfügbaren Variaablen/Objekte zu ermitteln, etc.
Wie kann ich Plugins weitergeben/veröffentlichen?
Das Administrator-Kontrollzentrum bietet unter dem Menüpunkt Plugins & Produkte, Plugins herunterladen die Möglichkeit, verschiedene Plugins auszuwählen und diese als XML-Datei herunterladen.
Im Normalfall wird man jedoch ein Produkt erstellen und dieses exportieren; das so entstehende XML enthält dann alle Plugins des jeweiligen Produkts
Und wie installiere ich Plugins?
Reine Plugin-XML-Dateien sind aus vorstehendem Grund eher selten, meist hat man es mit Produkt-XML-Dateien zu tun.
Hier im Forum werden (zumindest von mir) häufig Plugins in der Form
Einstiegspunkt
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
gepostet. Dies bedeutet dass man einfach ein Plugin für den genannten Einstiegspunkt erstellt und den geposteten Code hineinkopiert.
Ein Plugin verursacht Fehler, was kann ich tun?
Für diesen Fall gibt es mehrere Möglichkeiten
Das fehlerhafte Plugin ist bekannt, die Nutzung des ACP ist möglich
Dann kann man das betreffende Plugin einfach unter Plugins & Produkte, Plugins verwalten deaktivieren
Es ist nicht bekannt welches Plugin den Fehler verursacht, das ACP funktioniert aber
In diesem Fall kann man das komplette Plugin-System unter vBulletin Einstellungen / Plug-In System deaktivieren
Ein Zugriff auf das ACP ist aufgrund von Fehlern nicht mehr möglich
In diesem Fall benötigt man FTP/SSH/etc. Zugriff auf die Datei config.php im Verzeichnis includes.
In diese Datei schreibt man dann
PHP:
----------
Der Inhalt dieses Abschnitts ist nur für Lizenznehmer sichtbar, Sie werden derzeit jedoch nicht als Lizenzinhaber erkannt.<br />
<br />
Bitte öffnen Sie den <a href="http://members.vbulletin-germany.com/membersupport_priority.php">Kundenbereich</a>, tragen Sie Ihre E-Mail-Adresse ein, mit der Sie sich hier registriert haben und aktivieren Sie die Lizenzüberprüfung für http://www.vbulletin-germany.org.
----------
Dies erzwingt eine Deaktivierung des Plug-In Systems
Ergänzungen/Kommentare sind erwünscht, aber bitte keine Fragen! Das ist der falsche Platz hier