次のようなプラグインがあります。
class plgExtensionLogInstall extends JPlugin
{
function onExtensionAfterInstall($installer, $extensionId)
{
JLog::add("Extension installed: ".$extensionId, JLog::DEBUG, 'plg_extension_log_install);
}
}
これは正しくインストールされ、有効にできますが、別の拡張機能をインストールしてもトリガーされません。
いくつかの追加のロギングを/libraries/joomla/event/dispatcher.php
onextensionafterinstall
にフックされた2つのイベントリスナーを見ることができますが、どちらも私のリスナーではありません。拡張XMLファイルには、標準の拡張の説明と次のようなファイルセクションのみが含まれます。
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="extension">
<name>Plugin Logger</name>
<version>0.0.1</version>
<files>
<filename plugin="installer_log">installer_log.php</filename>
<filename>index.html</filename>
</files>
</extension>
イベントはトリガーされませんが、コードが壊れている場合は、インストーラーの実行時にクラッシュします。クラスまたは構成に何が欠けていますか?
プラグインクラス名は、マニフェストファイルで定義されたプラグイン名と一致する必要があります。
マニフェストにこれがある場合:
<filename plugin="installer_log">installer_log.php</filename>
次に、クラス名はPlgExtensionInstaller_Log
。
逆に言うと、クラスがPlgExtensionLogInstall
の場合、マニフェストには次のものが含まれているはずです。
<filename plugin="loginstall">loginstall.php</filename>