51aspxV1.6与dnt1.0做了很好的整合,应广大网友的要求,特把其dnt整合改造的方法及源码做为DiscuzNT改造系列文章陆续在disuzNT官方网站公布。

关于删除帖子后论坛版块列表中不更新的解决办法
主要现象:当删除坛子中的帖子后对应的板块仍然显示最新已删除的帖子
解决办法:
1、未打开当前版块的回收站
打开系统中dnt_deletetopicbytidlist的存储过程
在“UPDATE [dnt_users] SET [posts] = [posts] - 1 WHERE [uid] = @tempPosterid”后插入
--更新forum开始

Declare @lasttid int
Declare @lastposterid int
Declare @lasttitle nvarchar(300)
Declare @lastpost datetime
Declare @lastposter nvarchar(100)

--更新lasttitle
SELECT TOP 2 @lasttid = [tid], @lastposterid = [posterid], @lasttitle = [title], @lastpost = [postdatetime], @lastposter = [poster] FROM [dnt_posts1] WHERE [tid] in (select tid from dnt_topics where fid = @tempFid and displayorder>-1) ORDER BY [pid] DESC
UPDATE [dnt_forums] SET lasttid=@lasttid,lastposterid=@lastposterid,lasttitle=@lasttitle,lastpost=@lastpost,lastposter=@lastposter where fid=@tempFid
--更新forum结束

2、当前版块已打开回收站,则把dnt_deletetopicbytidlist存储过程替换为
[code]set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
---解决了删除帖子forum不更新的问题
ALTER PROCEDURE [dbo].[dnt_deletetopicbytidlist]
@tidlist AS VARCHAR(2000),
@posttablename AS VARCHAR(20)
AS
DECLARE @postcount int
DECLARE @topiccount int
DECLARE @todaycount int
DECLARE @sqlstr nvarchar(4000)
DECLARE @fid varchar(2000)
DECLARE @posterid varchar(200)
Declare @tempTid int
DECLARE @tempFid int
DECLARE @tempPosterid int
DECLARE @tempLayer int
DECLARE @temppostdatetime datetime
DECLARE @tempfidlist AS VARCHAR(1000)

SET @fid = ''
SET @posterid = ''
SET @postcount=0
SET @topiccount=0
SET @todaycount=0

SET @tempfidlist = '';

IF @tidlist<>''
  BEGIN
  --对于回收站中的帖子不做处理
  SET @sqlstr = 'DECLARE cu_dnt_posts CURSOR FOR SELECT [tid],[fid],[posterid],[layer],[postdatetime] FROM [' + @posttablename + '] WHERE [tid] IN (' + @tidlist + ')'
  EXEC (@sqlstr)
  OPEN cu_dnt_posts
  FETCH NEXT FROM cu_dnt_posts into @tempTid,@tempFid,@tempPosterid,@tempLayer,@temppostdatetime
  WHILE @@FETCH_STATUS = 0
    BEGIN
    SET @postcount = @postcount + 1
    IF @tempLayer = 0
      BEGIN
      SET @topiccount = @topiccount + 1
     
      END
    IF DATEDIFF(d,@temppostdatetime,GETDATE()) = 0
      BEGIN
      SET @todaycount = @todaycount + 1
      END

IF CHARINDEX(',' + LTRIM(STR(@tempFid)) + ',',@fid + ',') = 0
      BEGIN
      --SET @fid = @fid + ',' + LTRIM(STR(@tempFid))
      SELECT @tempfidlist = ISNULL([parentidlist],'') FROM [dnt_forums] WHERE [fid] = @tempFid
      IF RTRIM(@tempfidlist)<>''
        BEGIN
        SET @fid = RTRIM(@fid) + ',' +  RTRIM(@tempfidlist) + ',' + CAST(@tempFid AS VARCHAR(10))
        END
      ELSE
        BEGIN
        SET @fid =RTRIM(@fid) + ',' +  CAST(@tempFid AS VARCHAR(10))
        END
   
      END
    UPDATE [dnt_users] SET [posts] = [posts] - 1 WHERE [uid] = @tempPosterid
   
--更新forum开始 add by liudao
    Declare @lasttid int
    Declare @lastposterid int
    Declare @lasttitle nvarchar(300)
    Declare @lastpost datetime
    Declare @lastposter nvarchar(100)
   
    --更新lasttitle
    SELECT TOP 1 @lasttid = [tid], @lastposterid = [posterid], @lasttitle = [title], @lastpost = [postdatetime], @lastposter = [poster] FROM [dnt_posts1] WHERE [tid] in (select tid from dnt_topics where fid = @tempFid and tid<>@tempTid and displayorder>-1) ORDER BY [pid] DESC
    UPDATE [dnt_forums] SET lasttid=@lasttid,lastposterid=@lastposterid,lasttitle=@lasttitle,lastpost=@lastpost,lastposter=@lastposter where fid=@tempFid
--更新forum结束
    FETCH NEXT FROM cu_dnt_posts into @tempTid,@tempFid,@tempPosterid,@tempLayer,@temppostdatetime
    END
  CLOSE cu_dnt_posts
  DEALLOCATE cu_dnt_posts

IF LEN(@fid)>0
    BEGIN
 
    SET @fid = SUBSTRING(@fid,2,LEN(@fid)-1)
 
    UPDATE [dnt_statistics] SET [totaltopic]=[totaltopic] - @topiccount, [totalpost]=[totalpost] - @postcount
 
    SET @sqlstr = 'UPDATE [dnt_forums] SET [posts]=[posts] - ' +  cast(@postcount AS VARCHAR(10))  +
        ', [topics]=[topics] - ' + cast(@topiccount AS VARCHAR(10)) +
        ', [todayposts] = [todayposts] - ' + cast(@todaycount AS VARCHAR(10)) +
      ' WHERE [fid] IN (' + @fid + ')'
    EXEC (@sqlstr)
   
 
    SET @sqlstr = 'DELETE FROM [dnt_favorites] WHERE [tid] IN (' + @tidlist + ')'
    EXEC (@sqlstr)
   
    SET @sqlstr = 'DELETE FROM [dnt_polls] WHERE [tid] IN (' + @tidlist + ')'
    EXEC (@sqlstr)
    SET @sqlstr = 'DELETE FROM [' + @posttablename + '] WHERE [tid] IN (' + @tidlist + ')'
    EXEC (@sqlstr)
   
    END
  SET @sqlstr = 'DELETE FROM [dnt_topics] WHERE [closed] IN (' + @tidlist + ') OR [tid] IN (' + @tidlist + ')'
  EXEC (@sqlstr)
 
  END

然后再把Forum.TopicAdminFactory的567行

[运行代码] [复制到剪贴板] [ ± ]

CODE:

return toDustbin == 0 ? DeleteTopics(topiclist) : SetTopicStatus(topiclist, &quot;displayorder&quot;, -1);

改为

[运行代码] [复制到剪贴板] [ ± ]

CODE:

if(toDustbin != 0 )//放入回收站
            {
            SetTopicStatus(topiclist, &quot;displayorder&quot;, -1);
            }
            return DeleteTopics(topiclist);//利用存储过程删除

最后别忘了如果操作了第二步编译才生效
总之如果没有设置版块的回收站只需第一步修改存储过程即可,如果打开了回收站处理起来就比较麻烦一些了。

注意:修改任何文件前请做好数据备份,以免带来不必要的麻烦

DiscuzNT改造系列之删除帖子后论坛版块列表同步更新相关推荐

  1. Altium designer原理图库中元件变动后在原理图中同步更新方法

    AD原理图库中元件变动后在原理图中同步更新 在原理图中选择Tools–>Update from libraries 接下来选中需要更改的器件–>next 勾选上对应需要修改的料号,点击Fi ...

  2. php同步刷新,多个PHPWind论坛数据同步更新教程

    本教程是以较大众形的空间为例的,如果大家是别的空间,只要是支持远程调用数据库,也可以用同样的步骤进行数据的同步! 第一步:设置主论坛的数据库为可以远程调用! 第二步:备份主论坛的数据库,这个可以到pw ...

  3. DiscuzNT改造-远程内容自动采集-DNT2.5(定时采集、源码下载)

    这个采集器原型来自于 <Discuz!NT论坛超级采集器普及版>http://nt.discuz.net/showtopic-46542.html,感谢原作者! 使用说明: 1. 将运行程 ...

  4. 如何从Facebook组中删除帖子

    If someone is posting abusive messages in a Facebook Group you manage, you'll want to remove it. It' ...

  5. 快压系列软件删除(尽力版)

    快压系列软件删除(尽力版) 今天本来想下载space sniffer,结果脑子一热去华军软件园下载,再然后直接运行下载的.exe文件,结果一串儿就来了. 刚点击该文件的0.01秒后,各种弹窗接踵而至, ...

  6. 拷贝文件产生副本_从Windows 10中删除文件后,文件的副本在文件历史记录中保留多长时间?...

    拷贝文件产生副本 If you have decided to make use of Windows 10's file history capabilities, how long will a ...

  7. Oracle 删除数据后释放数据文件所占磁盘空间

    . . . . . 测试的时候向数据库中插入了大量的数据,测试完成后删除了测试用户以及其全部数据,但是数据文件却没有缩小.经查阅资料之后发现这是 Oracle "高水位"所致,那么 ...

  8. Php 删除数组后几个元素

    <?php /* * 文件分类: practice@helkbore * 删除数组后几个元素 * 整理时间 2016年2月5日10:24:42 */ $arr1 = array('aa', 'b ...

  9. mongoDB 删除集合后,空间不释放的解决方法

    mongoDB 删除集合后,空间不释放的解决方法 参考文章: (1)mongoDB 删除集合后,空间不释放的解决方法 (2)https://www.cnblogs.com/ddbear/p/71116 ...

  10. mysql删除数据后id自增不连续的解决方法

    mysql删除数据后id自增不连续的解决方法 参考文章: (1)mysql删除数据后id自增不连续的解决方法 (2)https://www.cnblogs.com/weifeng-888/p/1163 ...

最新文章

  1. React路由 react-router-dom
  2. 条件概率计算代替RNN
  3. 58同城创始人姚劲波:未来十年是中国创业最好机会
  4. 单列索引和联合索引,有什么区别?
  5. SQL 语句时间比较
  6. inittab文件剖析[CentOS 5.X](第二版)
  7. html word classid,html之object标签的classid收集
  8. 小米12 Ultra有望春节后登场:主打影像升级 或与徕卡联名
  9. 某厂面试归来,发现自己落伍了!
  10. 命令窗口ping oracle,Oracle中tnsping命令解析
  11. iOS底层探索之KVO(四)—自定义KVO
  12. intouch的报警怎么发到微信上
  13. 利用格拉布斯准则,剔除异常数据
  14. yy直播插入php网页,网页YY迷你版怎么用 网页YY直播间进入方法步骤
  15. 我对软件测试的理解以及我的职业规划,希望对你们有所帮助
  16. 提醒专注:既往不恋,未来不迎,当下不杂
  17. Pandas数据分析与处理补充习题
  18. 【影视系列】《乘风破浪》
  19. 手机计算机数字游戏怎么玩,计算器游戏攻略
  20. 2020最新版前端学习路线图--让前端学习变得美如画

热门文章

  1. 持续图片滚动字幕html,使用JavaScript实现连续滚动字幕效果的方法
  2. 【多目标优化求解】基于matlab布谷鸟算法多目标(成本+时间+质量)优化求解【含Matlab源码 118期】
  3. 【人民币识别】基于matlab GUI人民币序列号识别【含Matlab源码 908期】
  4. java 四大元注解_java中元注解有四个
  5. 除了iframe嵌套还有什么嵌套_嵌套了ROUND函数,为什么还会差1分钱,值得收藏
  6. 多模态语义分析_学术竞赛 | 冠军方案分享2020科大讯飞AI开发者大赛多模态情感分析赛道...
  7. linux dprintk 日志,linux內核調試中的printk()函數詳解
  8. 计算机鼠标不灵活怎么办,鼠标不灵活了怎么办_鼠标突然变迟钝的解决方法
  9. python多线程怎么样_python如何使用多线程?
  10. java web术语_Java Web 基本概念和术语