Php 如何在joomla 2.5中编辑com_用户配置文件模型

Php 如何在joomla 2.5中编辑com_用户配置文件模型,php,joomla,joomla2.5,Php,Joomla,Joomla2.5,我使用Joomla 2.5开发了一个网站。我必须创建一个定制的web组件来满足用户的需求。因此,我必须在我的帐户部分添加更多功能并显示更多信息。因此,我不得不在user->profile模型中添加更多函数。但它将在更新joomla后被覆盖 我知道,在更新Joomla时,有模板覆盖机制来防止文件被覆盖 因此,我需要知道,是否有任何技术可用于继承核心概要文件模型和视图类以添加新功能 谢谢。您可以在自定义组件用户模型中扩展Joomla的JUser对象,但在Joomla中可以选择使用概要文件插件(jr

我使用Joomla 2.5开发了一个网站。我必须创建一个定制的web组件来满足用户的需求。因此,我必须在我的帐户部分添加更多功能并显示更多信息。因此,我不得不在user->profile模型中添加更多函数。但它将在更新joomla后被覆盖

我知道,在更新Joomla时,有模板覆盖机制来防止文件被覆盖

因此,我需要知道,是否有任何技术可用于继承核心概要文件模型和视图类以添加新功能


谢谢。

您可以在自定义组件用户模型中扩展Joomla的JUser对象,但在Joomla中可以选择使用概要文件插件(jroot/plugins/user/profile)

在这里,您可以找到一些使用配置文件插件的教程或示例:

我刚刚找到了一个论坛主题和扩展juser对象的示例。它适用于joomla 1.5,但如果您创建了一个新组件,则可以将其转换为J2.5:

h**p://forum.joomla.org/viewtopic.php?f=304&t=403113#p1703743

我希望有帮助

编辑: 扩展juser模型的示例:

jroot/administrator/components/com\u customcomp/models/customuser.php

class customUser extends JUser {
  // here you can override inherited JUser functions
}
defined('_JEXEC') or die('Restricted access');

if (!class_exists('UsersModelProfile'))
 require(JPATH_SITE.DS.'components'.DS.'com_users'.DS.'models'.DS.'profile.php');

//profile.php contains UsersModelProfile class 
//if your component is called com_newcomp and view is called customuser, the new class name sould be: NewcompModelCustomuser 
class NewcompModelCustomuser extends UsersModelProfile {/*anything*/}
编辑2:

jroot/administrator/components/com\u customcomp/models/customuser.php

class customUser extends JUser {
  // here you can override inherited JUser functions
}
defined('_JEXEC') or die('Restricted access');

if (!class_exists('UsersModelProfile'))
 require(JPATH_SITE.DS.'components'.DS.'com_users'.DS.'models'.DS.'profile.php');

//profile.php contains UsersModelProfile class 
//if your component is called com_newcomp and view is called customuser, the new class name sould be: NewcompModelCustomuser 
class NewcompModelCustomuser extends UsersModelProfile {/*anything*/}
测试模型:

在文件jroot/administrator/components/com_customcomp/views/customuser/view.html.php中

    $model = $this->getModel('Customuser');
    $userData = $model->getData();

    echo '<pre>';
    print_r($userData);
    echo '</pre>';

谢谢你的回复。实际上,我正在我的帐户部分显示从自定义组件收集的数据。因此,我需要更改核心概要文件模型以检索数据。但我认为这是不安全的。因为它在更新joomla后会被覆盖。有什么解决方案吗?您应该创建一个新的自定义usermodel,在其中扩展现有的juser模型:class customUser extends juser{//这里您可以覆盖继承的juser函数}我也可以覆盖视图和控制器吗?是的,您可以,但别忘了需要必要的文件,原始对象的定义。谢谢Gregory。我将对此进行检查。我发现了一个文档,其中描述了如何在joomla!中重写控制器、模型和视图!。这篇文章也很有帮助-