web-dev-qa-db-ja.com

プラグインがイベントにフックしないのはなぜですか?

次のようなプラグインがあります。

class plgExtensionLogInstall extends JPlugin
{

    function onExtensionAfterInstall($installer, $extensionId) 
    {
        JLog::add("Extension installed: ".$extensionId, JLog::DEBUG, 'plg_extension_log_install);
    }
}

これは正しくインストールされ、有効にできますが、別の拡張機能をインストールしてもトリガーされません。

いくつかの追加のロギングを/libraries/joomla/event/dispatcher.phponextensionafterinstallにフックされた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>

イベントはトリガーされませんが、コードが壊れている場合は、インストーラーの実行時にクラッシュします。クラスまたは構成に何が欠けていますか?

3
glenatron

プラグインクラス名は、マニフェストファイルで定義されたプラグイン名と一致する必要があります。

マニフェストにこれがある場合:

<filename plugin="installer_log">installer_log.php</filename>

次に、クラス名はPlgExtensionInstaller_Log

逆に言うと、クラスがPlgExtensionLogInstallの場合、マニフェストには次のものが含まれているはずです。

<filename plugin="loginstall">loginstall.php</filename>
5
Sharky