ASP.NET整合Discuz!NT3.5实例说明(含用户登录、评论等)
http://bbs.51aspx.com/showtopic-30029.html
前一陣想做一個團購導航網站,看到某些團購導航站都有論壇,自己也想加一個,研究了下Discuz!NT,發現有API接口,就忽然想到了用Discuz!NT來整合網站,豈不是很方便,會員那部分就不需要自己開發了。
說干就干,下來API的例子和開發包研究了一下,看了一遍仍然是一頭霧水,不知道是不是自己太笨。而且發現API還有錯誤,來官方論壇求助貌似沒有得到回答,看來還是只能靠自己啊。看了N遍終于明白了大概,整個API都熟悉了一下使用方法,發現API雖然方便但是的問題多多,其中用戶登錄后跳轉行為(不停的跳來跳去,效率太低,影響搜索引擎收錄)還有“Code: 103, Message: 當前會話所提交的call_id沒有大于前一次的call_id”錯誤,更是讓我徹底對API無語郁悶,最后只好采用第二套方法下載源碼自己整合+Discuz!NT API。
還好Discuz!NT是開源程序,否則我真放棄使用了,說下我的網站徐州86516團購導航http:/www.86516tuan.com,可以看到我主要整合了用戶的登錄狀態和登錄信息的獲取(登錄和注冊都在論壇完成)、登錄后退出、用戶的評論、自動發帖以及系統后臺的計劃任務等,下面一一介紹一下在整合方法,需要Discuz!NT的DLL,我是把所有的DLL都放到自己網站的bin目錄下,附上代碼。
1、用戶的登錄狀態和登錄信息的獲取
using Discuz.Forum;
using Discuz.Entity;
string discuzName = string.Empty;
if (Request.Cookies["dnt"] != null)
{
//已經登錄
int uid = Convert.ToInt32(Request.Cookies["dnt"]["userid"]);
//獲取登錄用戶信息
UserInfo info = Users.GetUserInfo(uid);
if (info != null)
{
discuzName = info.Username;
}
else
{
DiscuzSession ds = DiscuzSessionHelper.GetSession();
ds.Logout(string.Empty);
}
}
else
{
//未登錄
}
復制代碼
2、登錄后退出,需要API的DiscuzToolKit開發包的dll,下載地址是:http://nt.discuz.net/showtopic-81187.html
using Discuz.Toolkit;
DiscuzSession ds = DiscuzSessionHelper.GetSession();
ds.Logout(string.Empty);
復制代碼
3、自動發帖,我每采集一條團購數據就會給Discuz!NT論壇發一個帖子,同時兩邊利用ID對應上
比如:http://www.86516tuan.com/goods/787.html和http://www.86516tuan.com/bbs/showtopic-817.aspx
自動創建主題采用的也是API,方法如下,具體參數請參考官方API開發指南
DiscuzSession ds = DiscuzSessionHelper.GetSession();
TopicCreateResponse tcr = ds.CreateTopic(uid, title, fid ,message,tags,type_id);
復制代碼
4、獲取用戶評論,采用官方API
DiscuzSession ds = DiscuzSessionHelper.GetSession();
TopicGetRencentRepliesResponse trr = ds.GetRecentReplies(fid, tid, page_size, page_index);
復制代碼
5、發表新評論,這里是當初沒有徹底采用API的主要原因,API需要不停跳轉驗證用戶。經過研究源碼,自己寫出來評論功能,主要調用官方的存儲過程“dnt_createpost1‘,由于參數過多,這里就不寫代碼了,主要就是給參數賦值,用戶數據可以根據上面獲取用戶信息的方法來獲得,另外還可以在官方下載數據字典,來確定參數功能。
總結
以上是生活随笔為你收集整理的ASP.NET整合Discuz!NT3.5实例说明(含用户登录、评论等)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx配置静态文件过期时间
- 下一篇: 好视通-视频会议存在弱口令&任意