Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[修改] 连续回帖自动改为在上面一楼追加: 【长帖自动不追加·版块黑白名单】

[复制链接]
元首 发表于 2013-8-9 16:48:32 | 显示全部楼层 |阅读模式
本帖最后由 元首 于 2013-8-9 22:31 编辑

原插件地址: https://discuz.dismall.com/thread-1019232-1-1.html (部分参考)

更新日志:
   1: 完美兼容DZ X3版本.
   2: 增加时间限制, 当多少秒内才叠加. 每次叠加不会改变原主题的时间.
   3: 增加仅限回复功能, 旧版应该是支持对主题进行叠加的.
   4: 增加对是否删除进行判断.
   5: 完善楼层显示的问题.

演示图片:


提示:
    1: 为了让界面更有层次感, 我加入了ubb代码, $_insertword. 可自行修改.
    2: 凡是被叠加的回复tags将被修改为: superposition, 请不要修改.

第一步: 修改方法:
打开文件: \source\include\post\post_newreply.php 查找:
  1. $return = $modpost->newreply($params);
  2. $pid = $modpost->pid;
复制代码
然后替换为:
  1.     ########### 叠加快速的回复#######################
  2.     $_insertword = "\n\n[size=2][color=gray][u]{$_G['username']} 于 ".date("Y-m-d H:i:s", time())." 补充以下内容:[/u][/color][/size]\n";//追加内容前缀
  3.    
  4.     $_maxlength = 80;//字符数大于此值则一律不合并,注意1中文=2字符(GBK)或3字符(UTF)
  5.     $_reducesmile = 1;//设为1=去除表情之后计算字数,0=否
  6.     $_reducequote = 1;//设为1=去除引用之后计算字数,0=否
  7.     $_reducespace = 1;//设为1=去除空白换行之后计算字数,0=否
  8.     $_reducefirst = 1;//设为仅限回复, 0关闭.
  9.     $_reducetime  = 2000;//回复过多少秒后不再叠加
  10.     $_blackfids = array(8,20,5);//版块FID黑名单,此名单内不进行合并
  11.     $_whitefids = array();//版块FID白名单,此名单内进行合并,黑白名单同时存在时白名单无效
  12.     $discuz_uid = $_G['uid'];
  13.     $fid = $_GET['fid'];
  14.     $tid = $_GET['tid'];
  15.    
  16.     //设置部分结束
  17.     if($_blackfids && $_whitefids) unset($_whitefids);
  18.    
  19.     $temp = $message;
  20.     if(is_array($smilies))if($_reducesmile) foreach($smilies as $sm) {
  21.             $temp = str_replace($sm['code'], '', $temp);        
  22.     }
  23.     if($_reducequote) $temp = preg_replace("/\s*\[quote\][\n\r]*(.+?)[\n\r]*\[\/quote\]\s*/is", '', $temp);
  24.     if($_reducespace) $temp = preg_replace("/\s/is", '', $temp);
  25.     $temp = trim($temp);
  26.     $length = strlen($temp);
  27.     unset($temp);
  28.    
  29.     if($length <= $_maxlength && (!$_blackfids || !in_array($fid, $_blackfids)) && (!$_whitefids || in_array($fid, $_whitefids))) {
  30.             $tablename = DB::table('forum_post');
  31.             
  32.             $q =  DB::fetch_all("SELECT `authorid`, `pid`,`first`,`dateline` FROM $tablename WHERE tid='$tid' AND invisible='0' ORDER BY pid DESC LIMIT 1");
  33.             $q = $q[0];
  34.             if($_reducefirst && $q['first']==1)
  35.                 $discuz_uid = 0;
  36.             if(($q['dateline']+$_reducetime) <= time())
  37.                 $discuz_uid = 0;
  38.             
  39.             if($q['authorid'] == $discuz_uid && !$attachment && !$isanonymous) {
  40.                 $message = $_insertword . $message;
  41.                 DB::query("UPDATE $tablename SET `smileyoff` = '0', `bbcodeoff` = '0',`tags`='superposition', `message` = CONCAT(message, '$message') WHERE pid='{$q['pid']}'");
  42.                 $pid  = ($q['pid']+0);
  43.                 $modpost->pid  = $pid;
  44.                 $return = 'post_reply_succeed';
  45.                 $modpost->param('showmsgparam', array('fid'=>$_GET['fid'], 'tid'=>$_GET['tid'],'pid'=>$pid, 'from'=>'','sechash'=>''));
  46.                 $page = getstatus($modpost->thread['status'], 4) ? 1 : @ceil(($modpost->thread['special'] ? $modpost->thread['replies'] + 1 : $modpost->thread['replies'] + 2) / getglobal('ppp'));
  47.                 $modpost->param('page', $page);
  48.             }
  49.     }
  50.    
  51.     if(!$pid){
  52.                $return = $modpost->newreply($params);
  53.             $pid = $modpost->pid;
  54.     }
  55.     ################################### 叠加回复处理完成 ################################
复制代码
第二步修改方法:
打开文件:\source\module\forum\forum_viewthread.php 查找:
  1. include template('common/footer_ajax');
复制代码
在这一行的上面增加如下代码:
  1.     if($post['tags'] === 'superposition')
  2.     echo '<span id="tyjs"><script type="text/javascript">var rages = '.time().'; $("pid'.$_GET['viewpid'].'").parentNode.outerHTML=""; $("tyjs").outerHTML="";</script></span>';
复制代码
解决叠加时楼层显示多个的问题


文件包下载: (最新2013-08-01版文件修改)

解压文件分别对应:
\source\include\post\post_newreply.php
\source\module\forum\forum_viewthread.php

回复测试效果.

有异常请发上来.

End


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

1

查看全部评分

垃圾猫 发表于 2013-8-9 17:21:28 | 显示全部楼层
本帖最后由 垃圾猫 于 2013-8-9 17:36 编辑

多谢元首了,就知道找你没错,好人啦。。。楼主回复是否叠加????
******************另一个功能求元首修复**********
实现挖坟帖提示提醒图标,这帖子计算方式有点问题,你能否修改为最后一次回复距离本次回复时间差 超过设定时间才显示挖坟呢?
https://discuz.dismall.com/thread-3415425-1-1.html



回复

使用道具 举报

垃圾猫 发表于 2013-8-9 17:30:15 | 显示全部楼层
本帖最后由 垃圾猫 于 2013-8-9 17:33 编辑



元首发现问题了, 合并贴不是在上面一层合并;而是新回复了一个帖子合并的;
刷新后,正常了.....是什么原因?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

 楼主| 元首 发表于 2013-8-9 18:53:17 | 显示全部楼层
本帖最后由 元首 于 2013-8-9 18:54 编辑

回帖后跳转到最后一页  这个不要勾, 提供地址账号信息我试试.
回复

使用道具 举报

垃圾猫 发表于 2013-8-9 19:51:55 | 显示全部楼层
元首 发表于 2013-8-9 18:53
回帖后跳转到最后一页  这个不要勾, 提供地址账号信息我试试.

没有打勾,必须刷新一次才能正常显示,否则就会出现如我截图那样的小BUG
回复

使用道具 举报

垃圾猫 发表于 2013-8-9 21:44:12 | 显示全部楼层
元首 发表于 2013-8-9 18:53
回帖后跳转到最后一页  这个不要勾, 提供地址账号信息我试试.

测试完毕了,有修正方法吗?
回复

使用道具 举报

 楼主| 元首 发表于 2013-8-9 22:32:40 | 显示全部楼层
垃圾猫 发表于 2013-8-9 21:44
测试完毕了,有修正方法吗?

请按一楼的更新, 修复一次.
回复

使用道具 举报

非一般感觉 发表于 2013-8-9 22:58:44 | 显示全部楼层
  这个不错 支持哈
回复

使用道具 举报

垃圾猫 发表于 2013-8-9 23:01:43 | 显示全部楼层
本帖最后由 垃圾猫 于 2013-8-9 23:14 编辑

X3.0必备修改方法。
多谢,完全正确了
回复

使用道具 举报

asdsex 发表于 2013-8-10 09:58:23 | 显示全部楼层
很强大、、、{:soso__10169062262133571330_1:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 08:06 , Processed in 0.035538 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表