php168讨论区论坛 » PHP168整站使用求助、BUG反馈、经验交流区 » PW小插件:首页热门贴+QQ在线等级+社区之星 for PW4.3.2 4.0.1 修改版
PHP168专用空间1G 150元/年 送域名和数据库 1.2G全能空间送200M数据库 仅售99元 1G双线双IP高速空间+200M数据库=158

1G双线空间+CN+SQL=99 免费代办备案

PHP168官方推荐虚机—阳光互联 上海电信DELL双志强598/月4G硬防10M带宽 域名1元/年 至强空间80/年 整机起售450/月 托管300/月 网拓1G双线空间送数据库+邮局=88元/年

广告位招租,联系QQ:81684210




本页主题: PW小插件:首页热门贴+QQ在线等级+社区之星 for PW4.3.2 4.0.1 修改版 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

shlg 该用户目前不在线

头衔:凌乱的我 凌乱的我
级别: 硕士
发帖: 1784
积分: 9597 点
铜板: 0 个
注册时间:2004-12-10
最后登录:2008-10-27

PW小插件:首页热门贴+QQ在线等级+社区之星 for PW4.3.2 4.0.1 修改版

我是为了自己使用把论坛中原来发布的首页热门帖子for4.x和今日发贴排行榜(社区之星) for 3.x/4.x加以修改合并,本人也是一个菜鸟,为了方便同我一样的朋友使用特别发布出来,希望能给大家有所帮助!


4.3.2 演示:http://www.dbrylw.com/bbs/        

=============================================

下面是首页调用(使用之前请,备份:index.php,index.htm,read.htm,read.php):

1、修改index.php

查找
Copy code
$rawnewuser=rawurlencode($newmember);


的下面加上

Copy code
$listnum=10;//个数
$listlength=30;//长度
$timelv="";
$query = $db->query("SELECT m.uid,m.username,md.onlinetime FROM pw_members m LEFT JOIN pw_memberdata md USING(uid) WHERE md.onlinetime order by md.onlinetime desc limit 0,$listnum");
while($members=$db->fetch_array($query)){
$members[onlinetime]=(int)($members[onlinetime]/3600);
$i=0;
while((5*$i*$i+15*$i)<=$members[onlinetime])
{$i++;
$C=5*$i*$i+15*$i;
$N=$i;
}
$more= $C-$members[onlinetime];
$lv= $N;
  $timelv.="<a href='profile.php?action=show&uid=$members[uid]'>$members[username]</a> <img src='$imgpath/lv/{$lv}.gif' alt='在线等级:{$lv} 级\n在线时长:{$members[onlinetime]} 小时\n升级剩余时间:{$more} 小时'><br />";
}
unset($members);

/*首页热门帖开始*/

$listnum=10;//显示个数
$listlength=32;//标题长度
$liststar=3;//显示社区之星个数
$hotmember=$newthreads=$hitthreads=$replythreads="";

//会员发帖排行
$query=$db->query("SELECT m.uid,m.username,md.todaypost FROM pw_members m LEFT JOIN pw_memberdata md USING(uid) WHERE md.lastpost>'$tdtime' ORDER BY md.todaypost DESC limit 0,$listnum");
while($members=$db->fetch_array($query)){
$hotmember.="<a href='profile.php?action=show&uid=$members[uid]'>$members[username]</a> ($members[todaypost])<br />";
}
unset($members);
//最新发表主题
$query = $db->query("SELECT tid,author,subject,postdate FROM pw_threads order by postdate desc limit 0,$listnum");
while($threads=$db->fetch_array($query)){
$threads[postdate]=date("Y-m-j g:i",$threads[postdate]);
$threads[subject]=substrs($threads[subject],$listlength);
$newthreads.="<a href='read.php?tid=$threads[tid]' title='作者:$threads[author] 时间:$threads[postdate]'>$threads[subject]</a><br />";
}
unset($threads);

//浏览最多主题
$query = $db->query("SELECT tid,author,subject,hits FROM pw_threads order by hits desc limit 0,$listnum");
while($threads=$db->fetch_array($query)){
$threads[subject]=substrs($threads[subject],$listlength);
$hitthreads.="<a href='read.php?tid=$threads[tid]' title='作者:$threads[author] 浏览:$threads[hits]'>$threads[subject]</a><br />";
}
unset($threads);
//回复最多主题
$query = $db->query("SELECT tid,author,subject,replies,lastpost FROM pw_threads order by lastpost desc limit 0,$listnum");
while($threads=$db->fetch_array($query)){
$threads[lastpost]=date("Y-m-j g:i",$threads[lastpost]);
$threads[subject]=substrs($threads[subject],$listlength);
$replythreads.="<a href='read.php?tid=$threads[tid]' title='作者:$threads[author] 回复:$threads[lastpost]'>$threads[subject]</a><br />";
}
unset($threads);
//社区之星(灌水明星)
require_once(R_P.'require/bbscode.php');
$query=$db->query("SELECT m.uid,m.username,md.todaypost FROM pw_members m LEFT JOIN pw_memberdata md USING(uid) WHERE md.lastpost>'$tdtime' ORDER BY md.todaypost DESC limit 0,1");
while($star=$db->fetch_array($query)){
$topstar=$star[username];
$query = $db->query("SELECT icon FROM pw_members WHERE username='$topstar'");
$tsbbs = $db->fetch_array($query);
if ($tsbbs['icon']==""||$tsbbs['icon']=="|||"){
$tsbbs['face'] = "<img src=\"$imgpath/face/none.gif\">";
}else{
$tsbbs['face'] = showfacedesign($tsbbs['icon']);
}}
unset($star);

/*热门帖结束*/

注意:代码里的调用表头。默认为pw_members 的pw_不需要修改,否则请修改为与你安装时设置的表头一致。

=============================================

2, 打开模板目录index.htm文件,找到这一段代码:
Copy code
共 <b>$topics</b> 篇主题 | <b>$article</b> 篇帖子 | <b>$totalmember</b> 位会员<br>
<a href='search.php?digest=1' target=_blank>精华区</a> |
<a href='search.php?sch_time=all&orderway=lastpost&asc=desc&newatc=1' target=_blank>最新帖子</a> |
<a href='job.php?action=sign'>标记已读</a> | 欢迎新会员
<a href='profile.php?action=show&username=$rawnewuser' target=_blank><font color=#ff0000> $newmember</font></a></td></tr></table>


在这段代码下面插入以下代码:

Copy code
<table width=$tablewidth border=0 cellspacing=0 cellpadding=0 align=center><tr><td>
<table cellspacing=1 cellpadding=5 width=100% border=0 $i_table>
<tr>
<td class=head height=24 align=center><span class=bold>今日论坛之星</span></td>
<td class=head height=22 align=center><span class=bold>最新发表主题</span></td>
<td class=head height=22 align=center><span class=bold>最新回复主题</span</td>
<td class=head height=22 align=center><span class=bold>浏览最多主题</span></td>
<td class=head height=10 align=center><span class=bold>会员在线排行榜</span</td>
</tr>
<tr>
<td class='f_one' align=center><a href="profile.php?action=show&username=$topstar" title="今日社区之星:$topstar" target="_blank">$tsbbs[face]</a><br>
    $hotmember </td>
<td class='f_two'>$newthreads</td>
<td class='f_one'>$replythreads</td>
<td class='f_two'>$hitthreads</td>
<td class='f_two'>$timelv</td>
</tr>
</table>
<tr><td>
</table><br>


注:如果想加上今日发贴排行榜请查找
Copy code
<td class=head height=20 align=center><span class=bold>今日论坛之星</span></td>

在下面添加
Copy code
<td class=head height=25 align=center><span class=bold>今日论坛之星</span></td>


查找
Copy code
<td class='f_two'>$newthreads</td>


在下面添加
Copy code
<td class='f_one'>$hotmember</td>


=============================================
下面是read页面会员资料显示读取:

3、然后在template/read.htm中

Copy code
<!--
EOT;
}if($db_ifonlinetime){print <<<EOT
-->
在线时间:$read[ontime](小时)<br>
<!--
EOT;
}print <<<EOT
-->


替换为

Copy code
<!--
EOT;
}print <<<EOT
-->
<!--
EOT;
if($db_ifonlinetime){print <<<EOT
-->
<a title=您现在的在线时间等级><FONT color=#707070>∷ 在线等级: </font> <img src='$imgpath/lv/{$read[lv]}.gif' alt='在线等级:{$read[lv]} 级\n在线时长:{$read[ontime]} 小时\n升级剩余时间:{$read[more]} 小时'><br>
<!--
EOT;
}print <<<EOT
-->


4、修改read.php
找到:

Copy code
$read['ontime']=(int)($read['onlinetime']/3600);


修改为:
Copy code
$read['ontime']=(int)($read['onlinetime']/3600);
      $read['ontimemin']=(int)($read['onlinetime']%3600/60);
      $read['ontimesec']=(int)($read['onlinetime']%60);
      //其实这个算法很简单,给大家分析一下。
      $i=0;           //这个是等级变量的初始值。就是公式里的N
      while((5*$i*$i+15*$i)<=$read['ontime'])     //(5*$i*$i+15*$i)是用来计算每个等级所需要的时间长度。当$read['ontime']在线值,在$i所显示的输出数字范围内的时候,$i的值就是在线等级值。
      {$i++; //来设定I变量的递增。
      $C=5*$i*$i+15*$i; //目前等级所需要的时间长度。
      $N=$i; //原来这里是$i-1,那么这样就和QQ的不一样了。是从0级开始统计的。不是出来就是1级。去掉这个就万事ok了!
      }
          $read[more]= $C-$read['ontime']; // 剩余时间
          $read[lv]= $N;//目前等级


=============================================

5、把QQ等级图片上传到image/lv目录!

修改完毕!

注意:后台一定要打开
在管理模式 => 论坛核心设置 =>是否记录会员在线时间并在版块内显示(非常影响速度)

附件请到这里下载:
http://www.dbrylw.com/bbs/read.php?tid=374&fpage=1
爱情这玩意,分分秒秒都在发生,又分分秒秒都在终结。千年是心动的刹那,其它的都是易逝的生活!
顶端 Posted: 2006-02-18 11:29 | [楼 主]
lssxlh 该用户目前不在线


1星级VIP用户
级别: 小学生
发帖: 124
积分: 151 点
铜板: 0 个
注册时间:2006-01-04
最后登录:2008-10-10

很好呀,谢谢
顶端 Posted: 2006-02-20 11:32 | 1 楼
aicell 该用户目前不在线



头衔:学习中...... 学习中......
级别: 大专生
发帖: 1188
积分: 1255 点
铜板: 0 个
注册时间:2005-03-30
最后登录:2008-06-24

不错的插件
顶端 Posted: 2006-02-20 11:52 | 2 楼
shlg 该用户目前不在线

头衔:凌乱的我 凌乱的我
级别: 硕士
发帖: 1784
积分: 9597 点
铜板: 0 个
注册时间:2004-12-10
最后登录:2008-10-27

我的网站有更新和修改,有兴趣的可以去看看!!
爱情这玩意,分分秒秒都在发生,又分分秒秒都在终结。千年是心动的刹那,其它的都是易逝的生活!
顶端 Posted: 2006-02-20 15:45 | 3 楼
php168讨论区论坛 » PHP168整站使用求助、BUG反馈、经验交流区
最漂亮的免费风格欣赏下载 以铜板换广告位二 以铜板换广告位三 以铜板换广告位四
以铜板换广告位五 以铜板换广告位六 以铜板换广告位七 以铜板换广告位八

Total 0.172678(s) query 4, Time now is:11-22 13:06, Gzip disabled
Powered by PHPWind v5.3 Certificate Code © 2003-07 PHPWind.com Corporation 京ICP备05047353号