我有一个自定义的 PHP 系统。
我正在尝试使用 RSVP 和其他功能制作日历,但我注意到 Joomla 具有高级插件。我的问题是如何将自定义注册表单中的数据发送到 Joomla DB。
还有我的用户在使用我的自定义登录表单时如何访问受 Joomla 保护的页面(会话)?
有可能的?
我有一个自定义的 PHP 系统。
我正在尝试使用 RSVP 和其他功能制作日历,但我注意到 Joomla 具有高级插件。我的问题是如何将自定义注册表单中的数据发送到 Joomla DB。
还有我的用户在使用我的自定义登录表单时如何访问受 Joomla 保护的页面(会话)?
有可能的?
这适用于 joomla 1.6-2.5(和 prob 3.0,但未经测试)。不要认为这适用于 Joomla 1.5
因此,在您的模型文件中创建一个具有以下内容的函数:这使用最少数量的字段(名称,电子邮件,用户名,密码)......并且我使用电子邮件作为用户名
<?php
//create or link joomla user
JModel::addIncludePath(JPATH_BASE.'/components/com_users/models');
$params = JComponentHelper::getParams('com_users');
$forMYSQL = array();
$forMYSQL['id'] = '';
$forMYSQL['name'] = JRequest::getVar('fname').JRequest::getVar('name');
$forMYSQL['username'] = JRequest::getVar('email');
$forMYSQL['email'] = JRequest::getVar('email');
$forMYSQL['groups'][0] = 2; //Registered user group,
//$forMYSQL['groups'][1] = 8; //Super Admin user group
$forMYSQL['password'] = JUserHelper::genRandomPassword(); //Random password.
$forMYSQL['password2'] = $forMYSQL['password'];
//If a email is found....
$query = sprintf("SELECT * FROM `#__users` WHERE `email`='%s'", $forMYSQL['email']);
$this->_db->setQuery($query);
$checkuser = $this->_db->loadObject();
if ($checkuser->id > 0) {
//E-mail in use already NOT CREATING....
} else {
//EMAIL NOT USED... CREATING Joomla user
$userModel =& $this->getInstance('User', 'UsersModel');
$userModel->save($forMYSQL);
$newuid = $userModel->getState('user.id');
if ($newuid > 0) {
//User created.
} else {
//ERROR USER NOT CREATED.
}
}
?>
因此,如果您在 joomla 内部 .. 理想情况下在组件的模型文件内部 ... 否则您可以加载 joomla 框架,然后通过加载下一个代码片段来运行该代码:
// START: Initialize Joomla framework
define( '_JEXEC', 1 );
define( 'DS', DIRECTORY_SEPARATOR );
define('JPATH_BASE', dirname(__FILE__)); //This needs to point to the root of your joomla
// Including Required Files
require_once ( JPATH_BASE.DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE.DS.'includes'.DS.'framework.php' );
// Create the Application
$mainframe =& JFactory::getApplication('administrator');
$mainframe->initialise();
$user =& JFactory::getUser();
define( '_JEXEC', 1 );
//Including Required Joomla libarys
jimport('joomla.application.component.model');
jimport('joomla.application.component.modelitem');
jimport('joomla.application.component.modellist');
// END: Initialize Joomla framework
这一切都是可能的。
听起来您想采用现有的登录表单并将其转换为自定义的 Joomla 登录模块。这是 Joomla 关于如何创建自定义模块的文档的链接。
http://docs.joomla.org/How_do_you_create_a_custom_module%3F
这是另一个关于修改 Joomla 登录模块的内容。
http://docs.joomla.org/Customising_the_Login_Form_module
我没有快速的方法来教你如何做到这一点,但我会从学习 Joomla 模块结构开始并拆分(备份)现有的 Joomla mod_login(登录模块),这样你就可以了解它是如何工作的。
然后它只是将您的自定义 PHP 登录页面混入其中的任务。
没有切割和干燥,但绝对有可能。
一个快速的谷歌搜索产生了许多结果,人们试图修改自定义 Joomla 登录过程。我建议您加入 Joomla 板并开始尽可能多地阅读它。