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');
}
}
}
特定のサイトでJoomlaシステムオーバーライドプラグインを使用してクラスエラーを再宣言できない理由は、別のプラグインが原因であることがわかります。
別のプラグインが手動でクラスをロードするので、Joomlaシステムのオーバーライドメソッドとは異なります。だから私の本当のオーバーライドシステムプラグインは死んだ!そのプラグインを無効にすることにより、すべてが正常に動作します。
誰もがこのような状況に直面している場合は、まずプラグインリストをチェックして、他のすべてのサードパーティシステムプラグインを無効にし、デバッグして機能します!。