vBulletin 用户头像 Hack
[显示部分](必须部分)
如果只是简单的在论坛上显示的话,只需要按此部分所述去做。修改后,用户的头像由管理员负责上载指定目录。优点是管理员不需要对系统做太大的修改。

⒈打开 showthread.php ,查找“

$username=htmlspecialchars($userinfo[username]);

”,在后面加入“

    // User Logo Hack
    $userlogo = "images/member/".$username.".gif";
    if (file_exists($userlogo)) {
     $userlogo = "<img src="$userlogo">";
    } else {
     $userlogo = "";
    }
    // End User Logo Hack

”,查找“

$username=htmlspecialchars($post[fakename]);

”,在后面加入“

    // User Logo Hack 
    $userlogo = "";
    // End User Logo Hack

”,保存,关闭。


⒉进入《控制面板》,编辑模板 postbit ,找到“

<normalfont><B>$username</B></normalfont><br>
<smallfont>$usertitle</smallfont><br>

”,在句后面紧接着加入“

</td></tr><tr><td align="center">
$userlogo<br></td></tr><tr><td>

”,保存,退出。


⒊在 images 目录下建立 member 目录,上载与用户名相同的 gif/jpg ,后缀名确保为 gif 。


⒋完成!


注一:变量 $userlogo 可以改变,只需要改变相应位置就可以;
注二:member 目录也可以用别名,只需要改变第一步第一个操作就可以;
注三:第一步第一个操作加入多个判断语句可以增加Flash、QuickTime的头像显示;



[控制面板管理部分]
如果管理员比较喜欢此功能,想在控制面板上加入管理的项目,就使用此部分的修改。图象的处理、管理还是由管理员来负责。

⒈打开 admin/index.php ,查找“

<BR>
<table width="100%" border=0 cellpadding=0 cellspacing=0 align="center"><tr><td bgcolor="#336699">
<table width="100%" border=0 cellpadding=3 cellspacing=2>
<tr>
    <td align="right"><font color="#ffffff"><p><b>用户称谓</b></p></td>
</tr>
    <td bgcolor="#ffffff"><P>
<a href="usertitle.php?action=add">新增</a><br>
<a href="usertitle.php?action=modify">修改</a></p></td>
</tr>
</table>
</td></tr></table>

”,在后面加入“

<BR>
<table width="100%" border=0 cellpadding=0 cellspacing=0 align="center"><tr><td bgcolor="#336699">
<table width="100%" border=0 cellpadding=3 cellspacing=2>
<tr>
    <td align="right"><font color="#ffffff"><p><b>用户头像</b></p></td>
</tr>
    <td bgcolor="#ffffff"><P>
<a href="userlogo.php?action=upload">新增</a><br>
<a href="userlogo.php?action=edit">删除</a></p></td>
</tr>
</table>
</td></tr></table>

”,保存,关闭。


⒉上载 userlogo.php 到 admin 目录。


⒊完成!


注一:userlogo.php 文件名可以改变,只需要更改有关连接就可以;
注二:请确保 $logopath (如 admin/member ) 目录Web进程可写;



[用户自行维护部分]
如果管理员已经接受了此Hack,并决定让用户自行维护自己的头像,则使用此部分的修改。

⒈打开 member.php ,查找“

require("global.php");

”,在后面加入“

$logopath = 'images/member';        // 不要在后面加"/"

”,查找“

$userinfo=$DB_site->query_first("SELECT parentemail,coppauser,email,password,homepage,icq,aim,yahoo,biography,signature,adminemail,showemail,invisible,cookieuser,daysprune,timezoneoffset,emailnotification FROM user WHERE userid=$userid");

”,替换为“

$userinfo=$DB_site->query_first("SELECT parentemail,coppauser,email,password,homepage,icq,aim,yahoo,biography,signature,adminemail,showemail,invisible,cookieuser,daysprune,timezoneoffset,emailnotification,posts FROM user WHERE userid=$userid");

”(即在 FROM 前加入 ,posts ) ,在后面适当位置,如在“

  $timezoneoffset=$userinfo[timezoneoffset];

”之后,加入“

//    User Logo Hack
//    修改下面的数字来决定用户在拥有自己的头像前需要曾经发过多少帖子
  if ($userinfo[posts]>=1) {
   if (file_exists("$logopath/".$username.".gif")) {
    $userlogo = "<p align="center"><img src="$logopath/".$username.".gif"><br><a nhref="member.php?action=removelogo&username=$username"><normalfont>[删除]</normalfont></a><br>n <normalfont color="red">(请确定删除,系统将不再询问!)</normalfont></p>";
   } else {
    $userlogo = "<INPUT NAME="logofile" TYPE="file"><br><normalfont>(请选择您的头像)</normalfont>";
   }
  } else {
   $userlogo = "<normalfont>您只有 $userinfo[posts] 贴, 暂时没有资格拥有自己的头像</normalfont>";
  }
//    End User Logo Hack

”,查找“

// ############################### start update profile ###############################

”,在前面加入“

// User Logo Hack
// ############################### start remove user logo ###############################
if ($action=="removelogo") {

  if (unlink("images/member/".$username.".gif")) {
    eval("echo standardredirect($bbtitle,"".gettemplate("redirect_removeuserlogo")."","index.php");");
  } else {
    echo standarderror($bbtitle,gettemplate("error_removeuserlogo",0));
  }

}
// End User Logo Hack

”,查找“

  $getusername=$DB_site->query_first("SELECT username FROM user WHERE userid=$userid");
  $username=$getusername[username];

”,在后面适当位置,如“

  if ($username=="" or $password=="" or $passwordconfirm=="" or $email=="" or $emailconfirm=="") {
    echo standarderror($bbtitle,gettemplate("error_fieldmissing",0));

    exit;
  }

”之后,加入“

// User Logo Hack
// 修改下面的数字来设置图象文件的大小、高和宽
  if (isset($logofile)!=0 and $logofile!="") {
    $lImg = getimagesize($logofile);
    if ($logofile_size>8196 || $lImg[0]>100 || $lImg[1]>200) {
      echo standarderror($bbtitle,gettemplate("error_userlogofiletoolarger",0));
      exit;
    } else {
      copy("$logofile","$logopath/".$username.".gif");
    }
  }
// End User Logo Hack

”,保存,关闭。


⒉将 inst_userlogo_template.php 上载到 admin 目录下,并使用浏览器访问。


⒊进入《控制面板》,编辑模板 modifyprofile ,找到“


<FORM ACTION="member.php" METHOD="POST">

”,替换为“

<FORM ENCTYPE="multipart/form-data" ACTION="member.php" METHOD="POST">

”(即增加 ENCTYPE="multipart/form-data" ),查找“

<INPUT TYPE="password" NAME="passwordconfirm" VALUE="$password" SIZE=30 MAXLENGTH=13> <normalfont color="#ff0000"><sup>*</sup></normalfont></td>

</tr>

”,在后面加入“

<tr bgcolor="{secondaltcolor}">

<td><normalfont><B>个人头像:</B></normalfont></td>
<td>$userlogo</td>

</tr>

”,保存。

⒋完成!

注一:模板 modifyprofile 加入段中的 {secondaltcolor} 可以改为 {firstaltcolor} ,看颜色需要;

虽然可以通过修改 usergroup 表来控制用户是否有权加入自己的头像,但考虑到这不是一个大的Hack,所以我觉得没有必要在数据库里面最太大的修改,也就免了。