Komische Sache.
Wenn ich das Plugin jm_landingpage in der config.php bei Plugins > Disabled eintrage, ist es auch deaktiviert, aber gehe ich dann auf eine Seite zum Bearbeiten, ist der Editor verschwunden!
Nur noch die Reiter META und SEITE sind vorhanden.
Auch ein Löschen der Seite "Landingpage" und das Auskommentieren des Plugin-Aufrufs in der template.htm ändert daran nichts!
Erst das Löschen des auskommentierten Plugin-Aufrufs in der template.htm bringt den Editor zurück!
Kann mir das einer erklären?
jm_landingpage - Plugin deaktivieren im CMS
jm_landingpage - Plugin deaktivieren im CMS
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“ Ludwig's XH-Templates for MultiPage & OnePage
Re: jm_landingpage - Plugin deaktivieren im CMS
Wenn man ein Plugin in der Konfiguration deaktiviert, dann werden dessen Dateien (index.php, admin.php etc.) nicht mehr geladen, und somit stehen die dort definierten Funktionen etc. nicht mehr zur Verfügung. Wird nun eine Funktion im Template aufgerufen, die nicht zur Verfügung steht, dann beendet PHP die Script-Ausführung mit einem fatalen Fehler. Ich vermute, dass ist bei Dir passiert, aber es ist nicht wirklich aufgefallen, weil der Pluginaufruf erst gegen Ende des Templates erfolgt. (Dann fehlt allerdings vermutlich </body></html>, und das wiederum ist wichtig für bestimmte Scripte. Schau Dir im Zweifel mal das erzeugte HTML an.)
Wenn man den Pluginaufruf im Template auskommentiert, dann passiert das nicht. Aber, man muss richtig auskommtieren. Folgendes ist "falsch": Das zeigt zwar die Ausgabe des Plugins nicht mehr an (jedenfalls nicht unbedingt), aber es verhindert nicht, dass plugin() aufgerufen wird. Letzteres erreicht man so:
(das Syntax-Highlighting macht das auch ganz gut deutlich).
Wenn man den Pluginaufruf im Template auskommentiert, dann passiert das nicht. Aber, man muss richtig auskommtieren. Folgendes ist "falsch":
Code: Select all
<!-- <?php echo plugin();?> -->
Code: Select all
<?php // echo plugin();?>
Christoph M. Becker – Plugins for CMSimple_XH
Re: jm_landingpage - Plugin deaktivieren im CMS
Genauso ist es. Am Ende im Quelltext steht dann:cmb wrote:Wird nun eine Funktion im Template aufgerufen, die nicht zur Verfügung steht, dann beendet PHP die Script-Ausführung mit einem fatalen Fehler. Ich vermute, dass ist bei Dir passiert, aber es ist nicht wirklich aufgefallen, weil der Pluginaufruf erst gegen Ende des Templates erfolgt. (Dann fehlt allerdings vermutlich </body></html>, und das wiederum ist wichtig für bestimmte Scripte. Schau Dir im Zweifel mal das erzeugte HTML an.)
Der Debug-Modus meldete nichts.<!-- <br />
<b>Fatal error</b>: Call to undefined function jm_landingpage() in <b>D:\xampp\htdocs\cmsimplexh165\templates\mini1\template.htm</b> on line <b>96</b><br />
Wieder was gelernt.cmb wrote:Wenn man den Pluginaufruf im Template auskommentiert, dann passiert das nicht. Aber, man muss richtig auskommtieren.
Fazit:
Plugins die einen Aufruf in der template.htm benötigen, kann man über die CMS-Konfig nicht so einfach deaktivieren
„Bevor du den Pfeil der Wahrheit abschießt, tauche die Spitze in Honig!“ Ludwig's XH-Templates for MultiPage & OnePage
Re: jm_landingpage - Plugin deaktivieren im CMS
Die Meldung kommt im Prinzip schon durch den Debug-Modus, kann aber eben nicht mehr wie gewohnt im gelben Kasten angezeigt werden, weil das Script durch den fatalen PHP-Fehler nicht fortgesetzt werden kann, sondern sofort terminiert werden muss. Wäre der Pluginaufruf im Template nicht auskommentiert, dann würde man die Fehlermeldung nicht nur im Quelltext sehen. Wäre der Debug-Modus deaktiviert, dann würde seit XH 1.6.3 eine allgemeine Fehlermeldung an dieser Stelle angezeigt, mit dem Hinweis darauf, dass der Debug-Modus weitere Details offenbart.Ludwig wrote:Am Ende im Quelltext steht dann:Der Debug-Modus meldete nichts.<!-- <br />
<b>Fatal error</b>: Call to undefined function jm_landingpage() in <b>D:\xampp\htdocs\cmsimplexh165\templates\mini1\template.htm</b> on line <b>96</b><br />
Ja, richtig. Daher auch der entsprechende Hilfetext:Ludwig wrote:Plugins die einen Aufruf in der template.htm benötigen, kann man über die CMS-Konfig nicht so einfach deaktivieren
Keine optimale Lösung, aber leider ist da nicht mehr zu machen. Langfristig wäre es eine Möglichkeit die Pluginaufrufe dahingehend zu ändern, dass sie statische Klassenmethoden statt einfacher Funktionen verwenden (also z.B. jm::landingpage() statt jm_landingpage()). Dann könnte der Autoloader eingreifen, und den Fehler vernünftig abfangen, bevor er überhaupt passiert (benötigt aber zumindest PHP 5.3.0). Ob das aber für XH 1.7 schon erfolgen wird, bleibt abzuwarten. Zumindest müssten die Plugins entsprechend angepasst werden, damit es dann auch funktioniert.Eine durch Kommata getrennte Liste von Plugins, die nicht geladen werden sollen. Vorsicht: wenn eines dieser Plugins auf der Website verwendet wird, kann es sein, dass Sie auf die Website nicht mehr zugreifen können, und diese Option per FTP korrigieren müssen!
Christoph M. Becker – Plugins for CMSimple_XH