discuz7.2双向整合完成
纠结了一个星期终于将discuz7.2双向整合弄出来了,发现这个世界太美好了,呵呵~~~~
网上说的解决方案一般都是希望改PHP的源码,从论坛中直接写cookie或直接写到主站的数据库中去,不过这特别对于我们搞NET的来说有些痛苦,尤其像我这种菜鸟完全不会PHP,只能望discuz兴叹了吧,呵呵。可能怪自己思想太陕隘一直接着网上的方法弄,虽然不会但尽可能的在找人帮助,但收效甚微,在网上发了很多的贴子不惜散尽分,亦未曾得到理想的答案,提起这个我都会问候一下官方,发了N多的相同的问题的贴子却没有得到答复,或者是有得到解决的却不贴出相应的解决方案,让后人继续发贴,继续郁闷,衷分的希望广大同行们能够多多分享自己的经验,让我们后来者少走弯路,感谢AStar大哥,虽然没有解决到问题,但还有个人提醒下,感觉到还有个热心人,呵呵。下面贴出我整合的方法。
思路:至于从主站信息同步到论坛一般都是用discuz+UCenter做的,并且确实也很简单,用了网上提供的一个整合程序,可到下面下载,而论坛到主站我的做法是直接修改的论坛模板中的关于登录和注册的链接,使其直接跳转到主站进行登录,呵呵,做完后才发现其实那么简单,呵呵。。。。
一、主站到论坛:
1、进入到discuz后台,切换到UCenter选项,选择添加新应用;
2、进入添加应用后选择“自定义安装”后按要求填写信息,里面的通信密钥可以由自己写也可由系统生成;
3、提交后进入bbs根目录下面打开config.inc.php,复制并再粘贴以下部分
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//我们需要改的部分其实只有两部分
define('UC_CONNECT', 'mysql');
define('UC_DBHOST', 'localhost:6033');
define('UC_DBUSER', 'discuz');
define('UC_DBPW', 'discuzexp');
define('UC_DBNAME', 'discuz');
define('UC_DBCHARSET', 'gbk');
define('UC_DBTABLEPRE', '`discuz`.cdb_uc_');
define('UC_DBCONNECT', '0');
define('UC_KEY', 'dcw7z4p3Y4H3c4c6XfTfI4s4Ddg74dx4N29dC4reTb6cSf5aQ1Pafc1b3bz9IfS3');//这里需要修改将刚才添加新应用程序产生的密钥修改到这里,并且这里的密钥必须要和以后自己程序配置文件中一致。
define('UC_API', 'http://localhost:1108/bbs/uc_server');
define('UC_CHARSET', 'gbk');
define('UC_IP', '127.0.0.1');
define('UC_APPID', '1');//这里是你添加的应用程序的ID,不要忘记哦
define('UC_PPP', '20');
4、discuz部分基本完工,现在进入自己的项目中,需要更改web.config和刚才提供的一个整合程序中的app.config,添加以下代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
//web.config和App.config配置内容一样
<appSettings>
<add key="UC_API" value="http://localhost:1108/bbs/uc_server/"/>
<add key="UC_IP" value="127.0.0.1"/>
<add key="UC_KEY" value="c84bWOD4FwLIv0vGwt04ehfSJkBIs1e90bo+kyQ"/>
<add key="UC_CHARSET" value="gbk"/>
<add key="UC_APPID" value="4"/>
</appSettings>
5、现在基本完成了,然后直接按ucapi中的例子调用就OK了。
二、从论坛到主站,其实我的想法很简单,既然我不会php的话那么我就将论坛中所有的注册和登录的请求跳转到主站中去处理,需要修改以下部分文件代码:
1、templates\default\header.htm
2、forumdata\cache\common.js文件,在跟踪论坛的发贴和回复中得知,他如果判断你没有登录会调用这个文件中的showWindow函数,那么就可以在这里做文章了,直接改原来的代码,如:
function showWindow(k, url, mode, cache) { //截取他请求的页面,如果他直接请求的是logging.php那么直接跳到主站,否则进行提示 var path=url.split('?')[0].split('/')[url.split('?')[0].split('/').length-1]; if(path=="logging.php") window.location.href="http://localhost:3267/EatWeb/Login.aspx"; else{ var f=confirm("您还没登录,是否现在登录?");if(f==true)window.location.href="http://localhost:3267/EatWeb/Login.aspx"; } }