web-dev-qa-db-ja.com

Joomla 3でMVCクラスをオーバーライドする

Joomla 3でMVCクラスをオーバーライドする方法はありますか?

私はこのスレッドを見つけましたが、それはJoomla 2.5用です。 コアクラスをオーバーライドする方法?

Joomla 2.5でMVCオーバーライドを正常に実行しましたが、現在はJoomla 3に移動しましたが、そのプラグインはJoomla 3ではサポートされていません。

この記事を見つけましたが、プラグインを作成するのはよくありません。同じ概念が、Joomla 2.5で以前に使用したプラグインでも使用されています。

http://docs.joomla.org/How_to_override_the_component_mvc_from_the_Joomla!_core

また、これらのクラスを拡張してメソッドを上書きすることもできますか?

実際、登録メールテンプレート、ユーザータイプを確認するユーザーログインタスク、およびプロファイルビューを上書きして、テーブルからさらにデータを取得したいと思います。

私はこのプラグインを試しました- https://github.com/phproberto/joomla-mvc-override しかし、エラーが発生します。

    Warning: fopen(D:\xampp\htdocs\my_project/libraries/legacy/module/helper.php): failed to open stream: No such file or directory in D:\xampp\htdocs\my_project\libraries\joomla\filesystem\file.php on line 327
?>

    Fatal error: Class 'JModuleHelperLibraryDefault' not found in D:\xampp\htdocs\my_project\plugins\system\mvcoverride\core\module\helper.php on line 13

このような体験をした人はいますか?

ありがとう

7
cha

おかしい、私は昨日、このプラグインのサイトへの実装を終えたところです。

仲間のwebdevと私はjoomla 3.xのためにそれを変更し、それは動作します。

それはここにあります: https://github.com/ghazal/plg_mvcoverride

Nonumber.nl拡張子、Advanced Module Managerと組み合わせると、エラーがスローされます。

Call to undefined method JModuleHelper::addIncludePath()

急いでいる、私の非常に不合理な解決策は、最初の関数をコメント化することでした:

    public function onAfterInitialise()
    {

    $moduleHelperContent = JFile::read(JPATH_LIBRARIES.'/cms/module/helper.php');
    $moduleHelperContent = str_replace('JModuleHelper', 'JModuleHelperLibraryDefault', $moduleHelperContent);
    $moduleHelperContent = str_replace('<?php','',$moduleHelperContent);
    eval($moduleHelperContent);
    jimport('joomla.application.module.helper');
    JLoader::register('jmodulehelper', dirname(__FILE__).'/module/helper.php', true);

}

そして、これらの2行:

JModuleHelper::addIncludePath(JPATH_BASE.'/code/modules');
JModuleHelper::addIncludePath(JPATH_THEMES.'/'.$template.'/code/modules');

したがって、この場合、それを使用してモジュールのhelper.phpをオーバーライドする可能性を排除します。

私は助けを求めるためにここに投稿しようとしていましたが、あなたは私に打ち負かしました。

3
ghazal