web-dev-qa-db-ja.com

システムオーバーライドプラグインではクラスエラーを再宣言できません

Joomlaシステムプラグイン を使用して、コアオーバーライドプラグイン(サードパーティの拡張機能をオーバーライドするため)を作成しています。

問題は、t3フレームワークベースのテンプレートで表示されるクラスVirtueMartCartエラーを再宣言できないことです。

Joomlaのバージョンは3.3.6で、VM 3.0.2です。

同じプラグインは新規インストールで正常に動作しますが、このT3ベースの既存のサイトでエラーを返します。テンプレートを切り替えてみましたが、同じ問題が発生しました。他のプラグインが問題を覆っていると思いますか? :(

システムプラグインオーバーライドアプローチ。

class plgSystemComVirtuemartOverride extends JPlugin{

    public function __construct(&$subject, $config = array()) {

         parent::__construct($subject, $config);
     }

     public function  onAfterRoute () {

        $app = JFactory::getApplication();
        if('com_virtuemart' == JRequest::getCMD('option') && !$app->isAdmin()) {
            $template = $app->getTemplate();

            require_once(JPATH_SITE.'/templates/'.$template.'/code/com_virtuemart/helpers/cart.php');

        }
    }   


}
1
Jobin Jose

特定のサイトでJoomlaシステムオーバーライドプラグインを使用してクラスエラーを再宣言できない理由は、別のプラグインが原因であることがわかります。

別のプラグインが手動でクラスをロードするので、Joomlaシステムのオーバーライドメソッドとは異なります。だから私の本当のオーバーライドシステムプラグインは死んだ!そのプラグインを無効にすることにより、すべてが正常に動作します。

誰もがこのような状況に直面している場合は、まずプラグインリストをチェックして、他のすべてのサードパーティシステムプラグインを無効にし、デバッグして機能します!。

1
Jobin Jose