Hallo zusammen,
ich hatte kürzlich (hier) eine Inkompatibilität zwischen vBSEO und der Erweiterung "Plugins in Dateien auslagern" geschildert.
Kurz zusammengefasst hebelt obige Erweiterung vBSEO gänzlich aus und ich habe herausgefunden, woran dies liegt. Der Plugin-Code, der ausgelagert wird, landet in Dateien im Ordner "/includes/plugins" und wird von dort in die jeweiligen Scripte inkludiert. Soweit, so gut.
Wird nun der vBSEO-Code, beispielsweise aus dem Hook "init_startup" eingebunden, sehen wir folgenden Code:
Das Statement "dirname(__FILE__).'/functions_vbseo.php'" sollte sich im Normalfall auflösen zu "{pfad}/includes/functions_vbseo.php". Liegt der Code selbst aber in einem Unterverzeichnis wie oben geschildert, so löst sich das gleiche Statement auf zu "{pfad}/includes/plugins/functions_vbseo.php" und ergibt einen ungültigen Pfad.PHP Code:@include_once(dirname(__FILE__).'/functions_vbseo.php');
Da durch das '@' vor der Zeile die Fehlermeldung unterdrückt wird, macht das vBulletin artig weiter und bindet vBSEO eben nicht ein. Dies erklärt, warum ich dann rein gar nicts mehr von vBSEO erkennen kann.
Was also tun? Naja, machen wir's doch wie sonst auch: Nutzen wir die Konstante 'DIR', um an unsere Dateien zu kommen. Ändert man obigen Code also zu
dann folgt er nicht nur dem vBulletin Style-Guide, sondern - viel besser - funktioniert auch noch. Bleibt die Frage, ob es legitim ist, diesen Code so zu ändern. Ich sage: Ja. Wir ändern Code in Plugins - und wenn das vBulletin soweit initialisiert ist, dass Plugins ausgeführt werden können, dann wurde zuvor garantiert auch die Konstante 'DIR' initialisiert (ganz oben in init.php, noch vor der Verbindung zur Datenbank).PHP Code:@include_once(DIR . '/includes/functions_vbseo.php');
Für den Moment kann ich den Code in den paar Plugins per Hand ändern und so dieses Problem umgehen. Dennoch bleibt die Frage offen, warum die vBSEO-Entwickler diesen - im Kontext von vBulletin - sehr eigentümlichen Weg gehen, um Dateien zu inkludieren.
Grüße,
Gérome


LinkBack URL
About LinkBacks





Reply With Quote
