我试图在joomla中创建一些新的扩展。
我想为每个用户添加附加信息。我知道我可以通过创建自己的自定义用户配置文件插件并添加其他字段来实现这一点,但这会将这些字段添加到用户配置文件页面中。
我想单独显示新字段。例如,我可能在用户页面上有一个链接,将他们带到那里的基本信息,如姓名、电子邮件等。另一个链接向他们显示"其他"字段。
额外的字段不会是个人信息,这就是为什么我想单独显示它们。
我的问题是,我该如何做到这一点?我可以简单地为每个用户添加额外的字段吗?还是必须编写一个全新的组件?
更新:我不能使用现有的扩展,因为我想完全控制代码。此外,附加信息不会由用户添加,只会由管理员添加。
您不必使用标准用户配置文件在用户配置文件页面上显示配置文件字段。您可以将其配置为仅向管理员显示。您只需为不同的表单进行不同的设置(整个cms中有4个)。遵循核心插件中的模式。
最后我决定最好创建自己的组件。主要是因为当更新发布时,破解joomla将是一个害虫,而JED没有提供我想要的特定扩展。
这可能有两种主要方法。
- 您可以创建一个扩展,用户可以在其中填写信息,并将数据存储在连接到
#__users
表的单独数据库表中 - 您可以从JED下载扩展配置文件的扩展。这里有非商业和商业扩展,所以看看这里是否有适合您需求的东西
就我个人而言,我会安装一个预先制作的扩展,这将节省大量的工作/尝试和错误。
看看这个:http://extensions.joomla.org/extensions/clients-a-communities/user-management
如果您添加或更改了任何编码,如向用户表添加字段或在joomla中自定义注册页面,则在升级joomla版本后,它将恢复为默认值。这样做的方法是:
- 您必须创建另一个表,该表包含其他额外信息,并且应该具有来自
#__users
的userid - 提交表单时,您可以使用此Joomla代码获得另一个表
$module_table=JTable::getInstance('modules','profileTable')
-
Modules->表示您创建的表名。
-
ProfileTable->表示"组件名称"是Model名称,"表"是常用名称。
然后你必须像这样把post值传递给这个表。。
if (!$module_table->bind($post))
{
return 0;
}
if (!$module_table->check())
{
return 0;
}
if (!$module_table->store())
{
return 0;
}
通过这种方式,您可以为用户存储其他数据。出于显示目的,您需要使用userid连接这两个表并显示它…
祝你一切顺利。。