Ich erstelle ein Plugin und versuche, ein Skript nach der Installation auszuführen. Aus irgendeinem Grund scheint die Skriptdatei geladen zu werden, aber mein Code wird nie ausgeführt.
Meine script.php-Datei enthält Folgendes:
// No direct access
defined('_JEXEC') or die('Restricted access');
/**
* Script file for the plg_system_example plugin
*/
class plg_system_notifierInstallerScript{
/**
* Method to run after the plugin install, update, or discover_update actions have completed.
*
* @return void
*/
function postflight($type,$parent){
// For Testing Purposes
die('Hello World');
}
}
Ich habe ohne Glück versucht, verschiedene Ableitungen des Klassennamens zu verwenden. Wenn ich eine die () - Anweisung außerhalb der Klasse platziere, wird sie ausgeführt, was mich glauben lässt, dass die Datei geladen ist. Ich habe auch andere Methoden wie install () ohne Erfolg ausprobiert.
Beachten Sie, dass ich anstelle der die () - Anweisung tatsächlichen Code hatte, aber im Verlauf des Debuggens dieses Problems darauf umgestellt habe.
Was mache ich falsch, dass Joomla! ruft bei der Installation nicht die postflight () -Methode in meiner Klasse auf?
quelle
Antworten:
Haben Sie den Klassennamen ohne Unterstriche ausprobiert?
"plgSystemNotifierInstallerScript"
(oder möglicherweise "plgSystemnotifierInstallerScript" nicht sicher)
Das scheint das Format zu sein, das die beiden von mir überprüften Plugins verwenden.
quelle
In Joomla 3.4 basiert der Name der Installationsklasse auf der Plugin-Gruppe (z. B.
system
) aus dem Root-Tag im Manifest:und den Plugin-Namen (z. B.
myplugin
), der im Manifest in der folgenden Zeile steht:Und dann fügst du alles zusammen
plg
wie folgt vor :quelle
Nur für den Fall, dass jemand, der ein editors-xtd-Plugin erstellt, auf diesen Hinweis stößt, den Sie nach dem Kommentar von papacho
plgEditorsxtdMypluginnameInstallerScript
mit entferntem Bindestrich verwenden müssen.Also für das Plugin MyPluginName im Manifest
mypluginname.xml
In der Plugin-Datei
mypluginname.php
und in der
script.php
Dateibin am Ende dort angekommen ... :-)
PS Ich kann nicht herausfinden, warum Sie plgButton verwenden ... in der Plugin-Datei, aber editors-xtd im Manifest und im Skript (ohne Bindestrich), aber keine andere Kombination scheint zu funktionieren, also Hey Ho.
quelle
Der Klassenname des Skriptinstallationsprogramms ist in $ JPATH_ROOT / library / cms / installer / adapter.php: 553 definiert
Diese Durchschnitts
widthout any '-', das von str_replace unterdrückt wird
quelle