近日发现有人提供了drupal模块用于整合discuz。
而大家对joomla与discuz的整合呼声越来越高(数年前即有mambochina站长开发的整合组件)。
作者近日开始某个项目,顺带完成了此整合功能,近一个月以来测试运行良好。
感谢comsenz推出的Ucenter,代码非常短,亦无需修改任何现有核心代码。
从今天凌晨三点到现在,对这些程序作了简单整理,现放出以利诸Joo友。
主要特点:
1. 采用Ucenter API接口,标准化用户操作,代码简洁;
2. 支持与所有其他基于Ucenter的应用互操作,如Discuz,Supesite, EcShop等,各类操作均可通过Ucenter自动同步至Joomla;
3. 采用Joomla常用组件CB提供的插件功能,实现用户注册、登录、注销、改名、改密全站同步到Ucenter应用。
4. 以此为基础,站内短消息、积分系统、头像同步等仅需三至五小时的编码工作;
5. 未来将完善对Joomla1.5的支持;
6. 永久免费并将因应需求制作更多周边扩展。
安装简单至数步:
1. 请常规安装Discuz (Ucenter版本),Ucenter服务器端(参照comsenz.com站点ucenter安装配置说明),Joomla+CB组件;
2. 确保joomla与ucenter中用户名, 用户id不重复;
3. 修改Joomla中配置文件configuration.php,使其底部包含ucenter客户端配置参数如下
define('UC_CONNECT', 'mysql'); // 连接 UCenter 的方式
define('UC_DBHOST', 'localhost'); // UCenter 数据库主机
define('UC_DBUSER', 'dbuser'); // UCenter 数据库用户名
define('UC_DBPW', 'dbpass'); // UCenter 数据库密码
define('UC_DBNAME', 'dbname'); // UCenter 数据库名称
define('UC_DBCHARSET', 'utf8'); // UCenter 数据库字符集
define('UC_DBTABLEPRE', 'dbname.uc_'); // UCenter 数据表前缀
define('UC_DBCONNECT', '1'); // UCenter 数据库持久连接
define('UC_KEY', 'dsafasdfwer42141235fgvgd'); // 与 UCenter 的通信密钥
define('UC_API', '
zhonghuayixue.com/ucenter'); // UCenter URL
define('UC_CHARSET', 'utf-8'); // UCenter 的字符集
define('UC_IP', '58.30.16.108'); // UCenter 的 IP
define('UC_APPID', 3); // 当前应用的 ID
4. 将Ucenter安装包中的uc_client目录解压至joomla根目录下;
5. 将如下文件api/uc.php放置在 joomla根/api/uc.php,此文件实现版本1功能,即Ucenter到Joomla的同步;
6. 在CB组件中安装cb插件 plug_cbucentertreeber.zip,启用此插件,此插件实现版本2功能,即Joomla同步至Ucenter;
7. 修改/com_comprofiler/comprofiler.php文件:
– 查找onAfterUserUpdate这一行,原代码为:
$_PLUGINS->trigger( 'onAfterUserUpdate', array($row, $rowExtras, true));
– 请改为
$_PLUGINS->trigger( 'onAfterUserUpdate', array($row, $rowExtras, true, $_POST["password"]));
修改/administrator/components/com_comprofiler/admin.comprofiler.php文件,注意触发器名略有不同(在CB1.2RC2中这仍然是两个不同的触发器):
$_PLUGINS->trigger( 'onAfterUpdateUser', array($row, $rowExtras, true))
– 请改为
$_PLUGINS->trigger( 'onAfterUpdateUser', array($row, $rowExtras, true, $_POST["password"]))
8. 请测试。
动作 在应用中操作
ucenter joomla discuz supesite
用户注册 通过 通过 通过 通过
用户登录 通过 通过 通过 通过 !!新注册用户,需先在论坛中激活后supesite中方可登录(注1)
用户注销 通过 通过 通过 通过
用户资料更改 未通过 通过 通过 通过 此处ucenter中能更改email,但测试未通过(注2)
用户昵称更改 通过 未通过 未通过 未通过 !!凡涉及到用户名昵称更改的操作,请只在ucenter中更改(注3)
用户密码更改 通过 通过 通过 通过 此处包括更改资料时同时更改密码或单独更改密码(注4)
删除用户 通过 通过 通过 通过
* 注1:若有安装supesite/xspace,请务必提示用户先在论坛中激活再使用supesite。另,若使用google chrome浏览器登录,少数情况可能点击个人资料暂不存在,但此类情况重现率很低,有待研究CB1.02代码
* 注2:ucenter中更改的Email在各应用中均不见更新,discuz中email亦不会更改但在应用中更改email则能反馈至ucenter中。提请诸位慎用,有待官方解释或分析代码。
* 注3:但相对其他类别之操作亦有明显延迟,详见官方http://www.discuz.net/thread-1038512-1-1.html,有待进一步解释
* 注4:comprofiler更改资料及密码分为前台后台,均测试成功。
总结(再次提醒):
1.请不要使用joomla后台自带的用户资料更改功能更改用户名或密码——那不会同步更新至ucenter,确保使用CB组件的用户管理功能或其他应用程序。
2.更改昵称请慎行,至少确保在ucenter中更改
3.更改email地址请慎行,请在某一应用中更改
4.当前已经可以用于生产系统,但若在某个时候需要永久取消ucenter的挂接,则可能出现如下情况:
部分在挂接前注册的且挂接后未登录的用户数据仍存在于ucenter系统而未同步至joomla中(似乎也不是什么问题)。
期待Ucenter开发团队能改善ucenter中更新用户email后的通告及提供从应用中广播更新ucenter用户昵称的功能。
任何问题,请在此帖下回复或移步至作者主页留言
blog.treeber.net
若有修订版本,若不介意,请释出后给顺手给作者发一个邮件以供瞻仰。
六年Web开发经验,多年CMS开发经历,当前主要兴趣在Joomla/drupal及框架研究,对基于JS框架的开发亦有关注,欢迎合作开发(出于兴趣或商业应用均可)。
附件如下:
抱歉,部分用户反应若版本有细微差别将致问题,已经添加更详细说明,现重新放上,敬请重新下载。