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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[发布] 会员级别及发帖数级别升级进度条 For 7.0

[复制链接]
sw08 发表于 2009-5-16 18:27:40 | 显示全部楼层 |阅读模式
本帖最后由 sw08 于 2009-5-17 12:19 编辑

发帖等级,将会在会员信息页面显示下一级别所需要的积分进度条,以及升级到下一发帖数级别的进度条。
不要忘记将所有文件上传到images/default中(附件在下面有)!否则进度条不显示。

需要说明的是 修改forum.func.php这步,请根据论坛实际情况,修改 “$maxlv = 50;” 后面的数值,这个数字的数值表示你的论坛的最高级别的普通会员组的星星数,可以理解为最大级别。

修改viewthread.php
  1. if($post['username']) {
复制代码
上输入以下代码:
  1.     foreach($_DCACHE['ranks'] as $ids => $value){
  2.       if($value['postshigher'] > $post['posts'])
  3.          {
  4.             $post['posthigher'] = $_DCACHE['ranks'][$ids+1]['postshigher'];
  5.             $post['postlower'] = $_DCACHE['ranks'][$ids]['postshigher'];
  6.             $post['posttitle'] = $_DCACHE['ranks'][$ids+1]['ranktitle'];
  7.             $post['showstar'] = $_DCACHE['ranks'][$ids+1]['stars'];
  8.          }
  9.     }

  10.     $post['lev'] = dislev($post['credits'],$post['posts'],$post['posttitle'],$post['posthigher'],$post['postlower'],$post['showstar'],
  11.     $_DCACHE['usergroups'][$post['groupid']]['stars'],
  12.     $_DCACHE['usergroups'][$post['groupid']]['creditshigher'],
  13.     $_DCACHE['usergroups'][$post['groupid']]['creditslower']
  14.     );
复制代码
打开include/cache.func.php
找到:
  1.             if($userstatusby == 2) {
  2.                 while($rank = $db->fetch_array($query)) {
  3.                     $rank['ranktitle'] = $rank['color'] ? '<font color="'.$rank['color'].'">'.$rank['ranktitle'].'</font>' : $rank['ranktitle'];
  4.                     unset($rank['color']);
  5.                     $data[] = $rank;
  6.                 }
  7.             }
复制代码
替换成:
  1.             //if($userstatusby == 2) {
  2.                 while($rank = $db->fetch_array($query)) {
  3.                     $rank['ranktitle'] = $rank['color'] ? '<font color="'.$rank['color'].'">'.$rank['ranktitle'].'</font>' : $rank['ranktitle'];
  4.                     unset($rank['color']);
  5.                     $data[] = $rank;
  6.                 }
  7.             //}
复制代码
打开inculde/forum.func.php
在最后一行的"?>"上输入以下代码:
  1. function dislev($exp,$postsnum,$posttitle,$posthigher,$postlower,$showstars,$stars,$higher,$lower){

  2.   global $starthreshold;
  3.     $lvstars = '';
  4.     $num = $showstars;
  5.         $alt = 'alt="Rank: '.$num.'"';
  6.         if(empty($starthreshold)) {
  7.                 for($i = 0; $i < $num; $i++) {
  8.                         $lvstars .= '<img src="'.IMGDIR.'/star_level1.gif" '.$alt.' />';
  9.                 }
  10.         } else {
  11.                 for($i = 3; $i > 0; $i--) {
  12.                         $numlevel = intval($num / pow($starthreshold, ($i - 1)));
  13.                         $num = ($num % pow($starthreshold, ($i - 1)));
  14.                         for($j = 0; $j < $numlevel; $j++) {
  15.                                 $lvstars .= '<img src="'.IMGDIR.'/star_level'.$i.'.gif" '.$alt.' />';
  16.                         }
  17.                 }
  18.         }

  19.   $maxlv = 50;
  20.   if($stars > $maxlv) $stars = $maxlv;

  21.   $exp1 = $lower-$higher;
  22.   $exp2 = $exp-$higher;  
  23.   $exp3 = $postsnum-$posthigher;
  24.   $exp4 = $postlower - $posthigher;
  25.   $lvb = round($stars/$maxlv,2)*100;//等级的百分比
  26.   if($exp1 != 0) $expb = round($exp2/$exp1,2)*100;//距下一等级的积分的百分比
  27.   if($exp4 != 0) $expb1 = round($exp3/$exp4,2)*100;//发帖数百分比

  28.   $levstr = "<p> 当前等级: $stars </p>
  29.      <div class="showlv" ><img src="/images/default/fill1.gif" width="$lvb%" height="13"  /></div>";
  30.   if($exp1 != 0) $levstr .="<p>下一用户等级: $exp2 / $exp1</p>
  31.               <div class="showlv"><img src="/images/default/fill2.gif" width="$expb%" height="13" /></div>";
  32.    $levstr .="<p>$posttitle $lvstars</p><p>发帖级别: $exp3 / $exp4</p>
  33.               <div class="showlv"><img src="/images/default/fill3.gif" width="$expb1%" height="13" /></div>";  
  34.   return $levstr;
  35. }
复制代码
打开templates/default/viewthread_node.htm
  1. <p>{eval showstars($post['stars']);}</p>
复制代码
下输入以下代码:
  1. <p>$post[lev]</p>
复制代码
打开css_viewthread.htm
在最后一行输入:
  1. .showlv { border: 1px solid #000; width:140px; height:13px; padding: 0em; background: #FFF; margin-left:8px;margin-bottom:4px}

  2. .showlv img {float:left;}
复制代码
修改完后更新缓存

评分

5

查看全部评分

 楼主| sw08 发表于 2009-5-16 18:27:53 | 显示全部楼层
浏览效果

上面的是用户组等级
中间的是升级至下一用户组的积分进度条,需要说明的是,如果对应的用户是管理组或特殊用户组,不显示中间这一条
下面的是升级至下一发帖数级别的进度条

回复

使用道具 举报

crasher8798 发表于 2009-5-16 18:31:10 | 显示全部楼层
感谢楼主分享,我想请问楼主一个问题,如何在头像下面增加一个空格属性?
让管理员这种组图像不至于太靠近头像?
回复

使用道具 举报

 楼主| sw08 发表于 2009-5-16 18:35:41 | 显示全部楼层
具体请修改templates/default/viewthread_node.htm

大约在<p>{eval showstars($post['stars']);}</p>这里的位置进行修改。
回复

使用道具 举报

crasher8798 发表于 2009-5-16 18:36:20 | 显示全部楼层
感谢楼主!!
由衷的。。祝楼主平安一生。
我去修改试试。
回复

使用道具 举报

wl390005549 发表于 2009-5-16 18:42:45 | 显示全部楼层
不说什么,加分,谢谢
回复

使用道具 举报

playba 发表于 2009-5-16 18:59:00 | 显示全部楼层
强行插入前5~
回复

使用道具 举报

diyu09 发表于 2009-5-16 19:01:54 | 显示全部楼层
哈哈 不错啊
回复

使用道具 举报

11107207 发表于 2009-5-16 19:02:52 | 显示全部楼层
谢谢兄弟
回复

使用道具 举报

feijunwen 发表于 2009-5-16 19:11:05 | 显示全部楼层
真的很漂亮
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 13:39 , Processed in 0.106985 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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