内容出自:http://blog.treeber.com/20090104/500.html
本文是我在此基础上根据我自己的实际整合经验加以说明。

第一步:
安装joomla1.5.12(joomla.cn下载的中文版) ucenter1.5(gbk) disnuz7.0(gbk)
我分别安装在/www /u /bbs 目录,并分别对应www.domains.com u.domains.com bbs.domains.com 。

第二步:
复制bbs目录下的uc_client到www目录,注意修改文件夹属性,我的修改为775。

第三步:
在www目录下新建configuration_uc.php文件,内容如下:

第四步:
点此下载api文件
上传至www目录,同样注意修改文件夹属性,我这里设置的是775
第五步:
登陆ucenter,添加应用
应用名称: joomla
应用的 URL:www.domains.com
应用 IP:留空
通信密钥:dfjsalkfjslakj32142080dasllkj
应用类型:其他
应用的物理路径:留空
查看个人资料页面地址:留空
应用接口文件名称:uc.php
标签单条显示模板:留空
标签模板标记说明:留空
是否开启同步登录:是
是否接受通知:是
现在查看通信是否成功

第六步:
点此下载插件并在joomla安装

第七步:
修改www目录下的/plugins/authentication/joomla.php文件(修改之前请备份)
在这条代码后面

jimport( ‘joomla.plugin.plugin’ );

添加

//added by afo…
include_once(JPATH_ROOT.DS.”configuration_uc.php”);
include_once(JPATH_ROOT.DS.”uc_client”.DS.”client.php”);
include_once(JPATH_ROOT.DS.”api”.DS.”func_joomla_cb_user.inc.php”);
//added by afo…end

并把

$testcrypt = JUserHelper::getCryptedPassword($credentials[‘password’], $salt);

改为:

if($options[‘checkpassword’]==’skip’)
$testcrypt = $crypt;
else
$testcrypt = JUserHelper::getCryptedPassword($credentials[‘password’], $salt);

修改/components/com_user/controller.php文件,将

// Redirect if the return url is not registration or login
if ( ! $return ) {
$return = ‘index.php?option=com_user’;
}

$mainframe->redirect( $return );

改为:

// Redirect if the return url is not registration or login
if ( ! $return ) {
$return = ‘index.php?option=com_user’;
}

//added by afo…
exit(‘window.alert(“login success”);window.location.href=”‘.$return.'”;’);

$mainframe->redirect( $return );

然后把

// Redirect if the return url is not registration or login
if ( $return && !( strpos( $return, ‘com_user’ )) ) {
$mainframe->redirect( $return );
}

改为:

exit(‘window.alert(“logout success”);window.location.href=”‘.$return.'”;’);
// Redirect if the return url is not registration or login
if ( $return && !( strpos( $return, ‘com_user’ )) ) {
$mainframe->redirect( $return );
}

至此文件步骤修改完毕,请检查整合是否正常。

附整合失败后不能登陆的解决方法:

删掉/plugins/authentication/joomla.php /components/com_user/controller.php以及/plugins/user下的joomla_ucenter.php joomla_ucenter.xml,再重新上传源码包中的/plugins/authentication/joomla.php  /components/com_user/controller.php文件。

作者建议:

从discuz中登录后进入joomla看系统是否登录;

从joomla中登录后进入discuz看系统是否登录;

分别从两个系统登录,在discuz中注销看系统是否完全注销;

分别从两个系统登录,在joomla中注销后看系统是否完全注销。

其他改密、改名等也均请测试。

已知实现和问题:

·可由joomla中注册,ucenter其他应用中(以下简称ucenter)中将同步添加

·可由joomla中登录退出,ucenter将同步登录退出;

·可由joomla中修改/重置密码,ucenter可有新密码;

·可由DZ或其他ucenter应用中(以下简称DZ)注册,登录后joomla中将同时有新用户(不论在何处登录);

·可由DZ登录退了,Joomla将同步登录退出;

·可在DZ/Ucenter中改密码,Joomla将同步更改密码

·可在Joomla中删除和修改用户资料,Ucenter将同步删除或更改资料(Email)

–已知若在DZ中注册后,没有再次登录,则Joomla中若注册同名用户系统会给出提示,但界面过于简单

–已经Ucenter中删除用户后不会通知Joomla,而程序中当时暂无判断Joomla中用户是否被删除

–若在joomla后台设置需要验证,则用户登录时仍然提示成功,实际上未登录,这似乎是1.5.12的bug

–在退出后DZ有时会显示用户仍然在状态,但可能会提示用户“您没有登录”,或者点击后才消除登录状态

为了规避问题,建议如下:

^最好只开启某一个应用的注册链接

^建议Joomla不需用户验证,DZ需要用户验证或采用验证码

^仅在Joomla中删除用户

^需要更多针对DZ的测试和设置