效果见下图:
1。修改文件和要用到的文件
/bbs/memcp.php
/bbs/forumdisplay.php
/bbs/templates/default/forumdisplay.htm
/bbs/templates/default/css.htm [定义缩略头像样式]
/bbs/include/ImageCore.func.php [新增]
/bbs/img_s.php [新增,用于对以前上传的头像进行批量略缩,运行一次必须删除]
2。修改方法
2.1 打开/memcp.php
2.1.1 找到require_once './include/common.inc.php'; 下面添加
require DISCUZ_ROOT.'./include/ImageCore.func.php';
2.1.2 找到$avatar = 'customavatars/'.$discuz_uid.'.'.$avatarext;
$avatartarget = DISCUZ_ROOT.'./'.$avatar;
if(!@copy($_FILES['customavatar']['tmp_name'], $avatartarget)) {
@move_uploaded_file($_FILES['customavatar']['tmp_name'], $avatartarget);
}
下面添加
if(file_exists($avatartarget)) {
$avatarx = 'customavatars/s/'.$discuz_uid.'.'.$avatarext;
@copy ($avatar,$avatarx);
@vxResize($avatarx,$avatarx);}
2.1.3 找到
$avatarimagesize = @getimagesize($urlavatar);
$avatar = $urlavatar;
更改为
if(!preg_match("/^(images//avatars//.+?)$/i", $urlavatar)) {
$avatarimagesize = @getimagesize($urlavatar);
$avatar = $urlavatar;
}else{
$avatar=$systemavatar;
$avatarx = (str_replace("images/avatars/", "images/avatars/s/",$systemavatar));
@copy ($avatar,$avatarx);
@vxResize($avatarx,$avatarx);
}
2.1.4 找到
$avatarimagesize = @getimagesize($systemavatar);
$avatar = $systemavatar;
下边加
$avatarx = (str_replace("images/avatars/", "images/avatars/s/",$systemavatar));
@copy ($avatar,$avatarx);
@vxResize($avatarx,$avatarx);
2.2 打开 /forumdisplay.php
2.2.1找到
Select t.* FROM {$tablepre}threads t $dotadd2
替换成
Select $dotadd1 t.*, mf.avatar FROM {$tablepre}threads t $dotadd2
LEFT JOIN {$tablepre}memberfields mf ON(mf.uid = t.authorid)
一共两处。两个地方是紧挨着的。
2.2.2找到
} else {
$thread['highlight'] = '';
}
后面加上
if(!$thread['avatar']){
$thread['avatarx'] = 'images/avatars/s/noavatar.gif';
}
2.2.3 找到
$thread['lastposterenc'] = rawurlencode($thread['lastposter']);
后边加
if(preg_match("/^(customavatars//.+?)$/i", $thread['avatar'])) {
$thread['avatarx'] = str_replace("customavatars/", "customavatars/s/", $thread['avatar']);
}elseif (preg_match("/^(images//avatars//.+?)$/i",$thread['avatar'])) {
$thread['avatarx'] = str_replace("images/avatars/", "images/avatars/s/", $thread['avatar']);
} else { $thread['avatarx'] = 'images/avatars/s/noavatar.gif';}
3.1 打开 /templates/default/forumdisplay.htm
3.1.1找到
</td><td class="f_author">
后面加上
<!--{if $thread['authorid'] && $thread['author']}-->
<div style="float:left"><img src="$thread[avatarx]" οnerrοr="src='images/avatars/s/noavatar.gif'" width="22" height="22" class="portrait" /></div>
<!--{else}-->
<div style="float:left"><img src="customavatars/s/noavatar.gif" width="22" height="22" class="portrait" /></div>
<!--{/if}-->
4 在/templates/default/css.htm 最后面加上
.portrait {
border:2px solid #ccc;
padding:2px;
margin:2px;
background-color:#fff;
vertical-align:middle;
}
5. 将下面的附件下载,将两个文件上传到相应的咱径 。[附件解决因为系统不同出现的路径问题现在已更新]
ImageCore.func.php --->/include/ImageCore.func.php
img_s.php ----->/
两个文件上传完毕后,IE会出现 overflow 是因为你还没有运行 img_s.php,所以找不到图片, 先运它一次,再更新缓存即可。
如果是 *nix 系统,记得将 img_s.php 属性改为777 win主机不用改属性