web-dev-qa-db-ja.com

com_usersモデル関数の上書き保存

Com_users保存機能をオーバーライドすることは可能ですか?

これは私がこれまでに試したものです...

<?php
echo JPATH_SITE.'/components/com_users/models/profile.php';
require_once JPATH_SITE.'/components/com_users/models/profile.php';

class NbrealUsersModelProfile extends UsersModelProfile{
    public function save($data){
        die("it works");
    }
}
?>

これをテンプレートインデックスファイルに追加しました。

5
miguelmpn

このドキュメントページはこれであなたを助けるでしょう:

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

注:これはそれ自体では機能しません。代わりに、オーバーライドされたコントローラーのプラグインを作成する必要があります。

Joomla!をオーバーライドする必要がある場合があります。新しい機能を追加するか、コンポーネントを完全にカスタマイズするMVCコンポーネント。 MVCコンポーネントは、コンポーネントで使用されているのと同じクラス名を使用して完全にオーバーライドできます。これは、コンポーネントがアプリケーションによってディスパッチされる前にシステムプラグインをロードすることで実現されます。

これを行うには、独自のプラグインを作成できます。

class plgSystemComContentOverride extends JPlugin {
  public function __construct(&$subject, $config = array()) {
     parent::__construct($subject, $config);
 }

 public function onAfterRoute() {
     $app = JFactory::getApplication();
     if('com_content' == JRequest::getCMD('option') && !$app->isAdmin()) {
         require_once(dirname(__FILE__) . '/comcontentoverride/my_content_controller.php');
     }
 } 

}

あなたの場合、あなたはそれを次のようなものに変更する必要があります

class plgSystemComContentOverride extends JPlugin {
  public function __construct(&$subject, $config = array()) {
     parent::__construct($subject, $config);
 }

 public function onAfterRoute() {
     $app = JFactory::getApplication();
     if('com_user' == JRequest::getCMD('option') && !$app->isAdmin()) {
         require_once(dirname(__FILE__) . '/../../templates/{template_name}/code/com_users/profile.php');
     }
 } 
}
3
jdog