返回列表

[Discuz!] 如何自定义DiscuzX的等级图标

等级图标在后台是不能自定义设置的,唯一可以设置的就是等级的阀值,这个是控制等级升级图标的变更,它其实就像qq的等级中四个星星代表一个月亮,如果现在等级是三个星星,再升一级后就会变成了月亮,那这个阀值其实就是4。在discuzX中默认的阀值是2,这个其实就是说一个月亮代表的是两个星星。这个具体设置的位置是:后台管理->界面->界面设置->帖子内容页中的“星星升级阀值”

下面就说下怎么自定义等级图标

在static/image/common下有三个图片文件
star_level1.gif star_level2.gif star_level3.gif

这三个是discuzX默认的等级图标,星星,月亮和太阳。如果我们只是想更换图标只要替换这三个图标文件就可以了。

那么如果我们要深度自定义等级图标怎么办呢,比如像淘宝那样先是单心,双心,蓝钻,黄钻,皇冠,黄冠,紫冠这样呢?
我们首先上传等级图标文件到static/image/common下,文件名为
star_level1.gif star_level2.gif star_level3.gif star_level4.gif star_level5.gif star_level6.gif star_level7.gif
已经有的图标文件直接替换即可。
然后修改程序文件source/function/function_forumlist.php
找到335行开始的function showstars($num)函数
  1. function showstars($num) {

  2.         global $_G;

  3.         $return = '';

  4.         $alt = 'alt="Rank: '.$num.'"';

  5.         if(empty($_G['setting']['starthreshold'])) {

  6.                 for($i = 0; $i < $num; $i++) {

  7.                         $return .= '<img src="'.$_G['style']['imgdir'].'/star_level1.gif" '.$alt.' />';

  8.                 }

  9.         } else {

  10.                 for($i = 3; $i > 0; $i--) {

  11.                         $numlevel = intval($num / pow($_G['setting']['starthreshold'], ($i - 1)));

  12.                         $num = ($num % pow($_G['setting']['starthreshold'], ($i - 1)));

  13.                         for($j = 0; $j < $numlevel; $j++) {

  14.                                 $return .= '<img src="'.$_G['style']['imgdir'].'/star_level'.$i.'.gif" '.$alt.' />';

  15.                         }

  16.                 }

  17.         }

  18.         return $return;

  19. }
复制代码
修改为
  1. function showstars($num) {

  2.         global $_G;

  3.         $return = '';

  4.         $alt = 'alt="Rank: '.$num.'"';

  5.         if(empty($_G['setting']['starthreshold'])) {

  6.                 for($i = 0; $i < $num; $i++) {

  7.                         $return .= '<img src="'.$_G['style']['imgdir'].'/star_level1.gif" '.$alt.' />';

  8.                 }

  9.         } else {

  10.                 for($i = 7; $i > 0; $i--) {

  11.                         $numlevel = intval($num / pow($_G['setting']['starthreshold'], ($i - 1)));

  12.                         $num = ($num % pow($_G['setting']['starthreshold'], ($i - 1)));

  13.                         for($j = 0; $j < $numlevel; $j++) {

  14.                                 $return .= '<img src="'.$_G['style']['imgdir'].'/star_level'.$i.'.gif" '.$alt.' />';

  15.                         }

  16.                 }

  17.         }

  18.         return $return;

  19. }
复制代码
这样就可以自定义好等级图标了
自定义的等级可以是这样的,如图:
QQ图片20141016154445.jpg
2014-10-16 15:49

返回列表