Discuz开发 让DiscuzX2.5加上回帖支持功能

[复制链接]
建站高手 发表于 2015-7-31 16:38:10 [Discuz开发] 显示全部楼层 |阅读模式 上一主题 下一主题
ad广告
ad广告

马上注册,一起探讨正确快速的建站方法

您需要 登录 才可以下载或查看,没有帐号?快速注册

x
之前一直看着别人的论坛是X3.2的,有回帖点击支持这个功能。然后现在用回X2.5有点点别扭,又不想升级到X3.2上面。想想还是直接将X3.0的这个回帖支持功能搬过来了。为了使得论坛能够顺利升级并兼容到X3.2,所以我们对现在的数据表保持一直。

首先打开

/source/module/forum/forum_viewthread.php
找到

if($_G['forum_thread']['stickreply'] && $page == 1 && (!$_GET['authorid'] || $_GET['authorid'] == $_G['thread']['authorid'])) {
修改成

  1. if($_G['page'] === 1 && $_G['forum_thread']['stickreply'] && empty($_GET['authorid'])){
  2.                 $poststick = C::t('forum_poststick')->fetch_all_by_tid($_G['tid']);
  3.                 foreach(C::t('forum_post')->fetch_all($posttableid, array_keys($poststick)) as $post) {
  4.                         $post['position'] = $poststick[$post['pid']]['position'];
  5.                         $post['avatar'] = avatar($post['authorid'], 'small');
  6.                         $post['isstick'] = true;
  7.                         $sticklist[$post['pid']] = $post;
  8.                 }
  9.                 $stickcount = count($sticklist);
  10. @@ -579,9 +579,41 @@ if($page == 1 && $ordertype == 1) {
  11.                 unset($firstpost);
  12.         }
复制代码

找到

upload/source/module/forum/forum_viewthread.php
找到这一行

$tagnames = $locationpids = array();
修改成下面的样子

  1. $tagnames = $locationpids = $hotpostarr = $hotpids = array();

  2. $_G['setting']['threadhotreplies'] = 50; //此处根据情况更改,到达数值后置顶到主题贴
  3. $remainhots = ($_G['page'] == 1 && !$rushreply && !$hiddenreplies && !$_G['forum_thread']['special'] && !$_G['forum']['noforumrecommend'] && empty($_GET['authorid'])) ? $_G['setting']['threadhotreplies'] : 0;

  4. if($remainhots) {
  5.         $hotpids = array_keys(C::t('forum_hotreply_number')->fetch_all_by_tid_total($_G['tid'], 5));
  6.         $remainhots = $remainhots - count($hotpids);
  7. }

  8. if($hotpids) {
  9.         $hotposts = C::t('forum_post')->fetch_all_by_pid($posttableid, $hotpids);
  10.         foreach($hotpids as $hotpid) {
  11.                 if($hotposts[$hotpid]) {
  12.                         $hotpostarr[$hotpid] = $hotposts[$hotpid];
  13.                         $hotpostarr[$hotpid]['hotrecommended'] = true;
  14.                 }
  15.         }
  16.         unset($hotposts);
  17. }

  18. if($hotpostarr || $sticklist) {
  19.         $_newpostarr_first = array_shift($postarr);
  20.         $postarr = (array)$sticklist + (array)$hotpostarr + $postarr;
  21.         array_unshift($postarr, $_newpostarr_first);
  22.         unset($_newpostarr_first, $sticklist);
  23. }

  24. foreach($postarr as $post) {
  25.         if(($onlyauthoradd && $post['anonymous'] == 0) || !$onlyauthoradd && !isset($postlist[$post['pid']])) {

  26.                 if(isset($hotpostarr[$post['pid']])) {
  27.                         $post['existinfirstpage'] = true;
  28.                 }
复制代码

找到这一句

$seodata = array('forum' => $_G['forum']['name'], 'fup'
在前面加上

unset($hotpostarr);
在大概950行找到

if($_G['forum_pagebydesc']) {
修改成

  1. if(!$post['hotrecommended']) {
  2.                 if($_G['forum_pagebydesc']) {
  3.                         if($ordertype != 1) {
  4.                                 $post['number'] = $_G['forum_numpost'] + $_G['forum_ppp2']--;
  5.                         } else {
  6.                                 $post['number'] = $post['first'] == 1 ? 1 : ($_G['forum_numpost'] - 1) - $_G['forum_ppp2']--;
  7.                         }
  8.                 } else {
  9.                         if($ordertype != 1) {
  10.                                 $post['number'] = ++$_G['forum_numpost'];
  11.                         } else {
  12.                                 $post['number'] = $post['first'] == 1 ? 1 : --$_G['forum_numpost'];
  13.                                 $post['number'] = $post['number'] - 1;
  14.                         }
  15.                 }
  16.         }

  17.         if($post['existinfirstpage']) {
  18.                 if($_G['forum_pagebydesc']) {
  19.                         $_G['forum_ppp2']--;
  20.                 } else {
  21.                         if($ordertype != 1) {
  22.                                 ++$_G['forum_numpost'];
  23.                         } else {
  24.                                 --$_G['forum_numpost'];
  25.                         }
  26.                 }
  27.         }

  28.         if($post['hotrecommended']) {
  29.                 $post['number'] = -1;
  30.         }
复制代码

然后就是修改模版 打开upload/template/default/forum/viewthread_node.htm

找到

  1. <a href="{if $post[first]}forum.php?mod=viewthread&tid=$_G[tid]$fromuid{else}forum.php?mod=redirect&goto=findpost&ptid=$_G[tid]&pid=$post[pid]$fromuid{/if}" {if $fromuid}title="{lang share_url_copy_comment}"{/if} id="postnum$post[pid]" onclick="setCopy(this.href, '{lang post_copied}');return false;">$postno[$post[number]]{$post[number]}{$postno[0]}<!--{/if}--></a>
  2. 将之修改为

  3. <a href="{if $post[first]}forum.php?mod=viewthread&tid=$_G[tid]$fromuid{else}forum.php?mod=redirect&goto=findpost&ptid=$_G[tid]&pid=$post[pid]$fromuid{/if}" {if $fromuid}title="{lang share_url_copy_comment}"{/if} id="postnum$post[pid]" onclick="setCopy(this.href, '{lang post_copied}');return false;">
  4.                                                 <!--{if isset($post[isstick])}-->
  5.                                                         <img src ="{IMGDIR}/settop.png" title="{lang replystick}" class="vm" /> {lang from} {$post[number]}{$postnostick}
  6.                                                 <!--{elseif $post[number] == -1}-->
  7.                                                         <img src ="{IMGDIR}/settop.png" title="{lang replystick}" class="vm" /> {lang from} {lang recommend}
  8.                                                 <!--{else}-->
  9.                                                         <!--{if !empty($postno[$post[number]])}-->
  10.                                                                 $postno[$post[number]]
  11.                                                         <!--{else}-->
  12.                                                                 <em>{$post[number]}{$postno[0]}
  13.                                                         <!--{/if}-->
  14.                                                 <!--{/if}-->
  15.                                         </a>
复制代码

然后就完成了这次的修改




上一篇:DiscuzX用户组过期问题解决方法
下一篇:让Discuz X2 支持@通知功能

大神点评3

百家乐园 发表于 2015-7-31 16:49:06 [Discuz开发] 显示全部楼层
真是个专业文章 我收藏了
www.bjly.cc百乐园论
百家乐园 发表于 2015-7-31 16:50:11 [Discuz开发] 显示全部楼层
很给力,希望分享更多给力的帖子啊。
www.bjly.cc百乐园论
百家乐园 发表于 2015-7-31 16:55:05 [Discuz开发] 显示全部楼层
强烈支持,站帮网有你更精彩
www.bjly.cc百乐园论
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

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