我使用Joomla 2.5开发了一个网站。我必须创建一个自定义Web组件以方便用户需求。因此,我必须在我的帐户部分添加更多功能并显示更多信息。因此,我必须在user->个人资料模型中添加更多功能。但是在更新joomla之后它会被覆盖。
我知道,有一种模板覆盖机制可以防止在更新Joomla时覆盖文件。
http://docs.joomla.org/How_to_override_the_output_from_the_Joomla!_core
因此我需要知道,是否有任何技术可用于继承核心配置文件模型和视图类以添加新功能?
感谢。
答案 0 :(得分:2)
您可以在自定义组件用户模型中扩展Joomla的JUser对象,但是可以选择在joomla中使用配置文件插件(jroot / plugins / user / profile)。
在这里,您可以找到一些使用配置文件插件的教程或示例:
http://www.inmotionhosting.com/support/edu/joomla-25/user-profile/copy-user-profile-plugin
我刚刚找到了一个扩展juser对象的论坛主题和示例。它适用于joomla 1.5,但如果您创建了一个新组件,则可以将其转换为J2.5:
ħ**号码:?//forum.joomla.org/viewtopic.php F = 304& T公司= 403113个#p1703743
我希望它有所帮助
编辑: 扩展juser模型的例子:
jroot /管理员/组件/ com_customcomp /模型/ customuser.php
class customUser extends JUser {
// here you can override inherited JUser functions
}
EDIT2:
jroot /管理员/组件/ com_customcomp /模型/ customuser.php
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>';
$ userData结果:
JUser Object
(
[isRoot:protected] =>
[id] => 0
[name] =>
[username] =>
[email] =>
[password] =>
[password_clear] =>
[usertype] =>
[block] =>
[sendEmail] => 0
[registerDate] =>
[lastvisitDate] =>
[activation] =>
[params] => Array
(
)
[groups] => Array
(
)
[guest] => 1
[lastResetTime] =>
[resetCount] =>
[_params:protected] => JRegistry Object
(
[data:protected] => stdClass Object
(
)
)
[_authGroups:protected] =>
[_authLevels:protected] =>
[_authActions:protected] =>
[_errorMsg:protected] =>
[_errors:protected] => Array
(
)
[aid] => 0
[email1] =>
[email2] =>
)