Discuz!楼主热帖插件
2009 1 3 07:16 PM 2764次查看
原版在这帖:http://www.discuz.net/thread-1079810-1-1.html
我只是修改了bug,提升了性能,并更改了样式而已。
说实现方法前先说下:
由于我是和其他插件一起配合的,有些代码不能直接给出(因为直接套用是用不了的)。所以完全不懂SQL和PHP的,可以无视取数部分的修改;不懂HTML和CSS的,建议你放弃,不然样式很难看。
首先打开viewthread.php文件,搜索$thisgid = 0;,在下面添加如下代码
if ($page == 1 && $thread['special'] == 0) {
$colorarray = array('black', 'red', 'orange', 'yellow', 'green', 'cyan', 'blue', 'purple', 'gray');
//注意:如果你更改过帖子颜色的高亮显示,请从forumdisplay.php文件中搜索“$colorarray = array”,把那句复制到上面
//第一个'black'是默认颜色,如果你想像我一样显示成灰色,可以改成'gray'
$hot_threads = array();
$hthread = array();
$query = $db->query("SELECT tid, subject, dateline, lastpost, lastposter, views, replies, highlight FROM {$tablepre}threads WHERE fid=$fid AND authorid=$thread[authorid] AND displayorder>=0 AND tid<>$thread[tid] ORDER BY views DESC, replies DESC LIMIT 5");
//如果你需要取更多细节,把SELECT和FROM之间的改成*即可
//若要改取的数目,那个LIMIT 5就是最多取5条的意思
//此外,我取的是发在本区的帖,不想限制的可以把fid=$fid AND删掉
//其他的取数和排序方法我就不说了,会SQL的自己改,否则别动
while($hthread = $db->fetch_array($query)) {
$hthread['dateline']= gmdate("$dateformat $timeformat", $hthread['dateline'] + $timeoffset * 3600);
$hthread['lastpost']= gmdate("$dateformat $timeformat", $hthread['lastpost'] + $timeoffset * 3600);
$hthread['highlight'] = $hthread['highlight'] % 10; //这里是让颜色处于0~9之间,因为超过十位数是表示加粗等效果的
$hot_threads[] = $hthread;
}
}
接着打开templates/default/viewthread.htm文件,搜索:<!--{if $post['number'] == 1 && ($thread['tags'] || $relatedkeywords)}-->
在上面添加:
<!--{if $post['first'] && $hot_threads}-->
<div class="hotthread">
楼主热帖:
<!--{loop $hot_threads $hthread}-->
<p><a href="thread-$hthread[tid]-1-1.html" style="color:$colorarray[$hthread['highlight']]" title='发表时间: $hthread[dateline]{LF}浏览次数: $hthread[views] 次{LF}回复次数: $hthread[replies] 次{LF}最后回复: $hthread[lastposter]{LF}回复时间: $hthread[lastpost]'>$hthread[subject]</a></p>
<!--{/loop}-->
</div>
<!--{/if}-->
如果需要显示更多数据,可以在$hthread里面取,查查threads表的字段就知道了。class="hotthread"是样式,你可以去改templates/default/css_viewthread.htm,不会改的之前就叫你放弃了。
向下滚动可载入更多评论,或者点这里禁止自动加载。