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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

手把手教你制作uchome头像分男女且随机更换

[复制链接]
zuimengt 发表于 2009-10-22 10:54:27 | 显示全部楼层 |阅读模式
UCHome插件
语言编码: GBK简体 
插件名称: uchome头像分男女且随机换
插件作者: 仝飞
适用版本: UCHome 2.0
本帖最后由 zuimengt 于 2009-10-22 11:08 编辑

制作非常简单:
第一步:在ucenter\images目录下新建文件夹avatar,里面存放你的头像文件,每个头像文件由三张图片组成,大小分别是200×200、120×120、48×48,头像的命名,如果是男生头像,以“m”开头,如果是女生头像,以“f”开头,如,f_big_01.gif,f_middle_01.gif,f_small_01.gif(附件中有我精选的11个男生头像和10个女生头像);

第二步:修改uceter目录下的avatar.php文件(不懂php的可以直接下载我附件中的同名文件覆盖),第35行
  1. $avatar_url = 'images/noavatar_'.$size.'.gif';
复制代码
修改为
  1. //默认头像分男女,且随机选择,作者仝飞,支持网站www.kxss.net
  2.         require_once("data/config.inc.php");
  3.         require_once("lib/db.class.php");
  4.         $db = new db();
  5.         $db->connect(UC_DBHOST, UC_DBUSER, UC_DBPW, UC_DBNAME, UC_DBCHARSET, UC_DBCONNECT, UC_DBTABLEPRE);
  6.         $gd=$db->fetch_first("SELECT gender FROM cdb_members WHERE uid='$uid'");//注:如果discuz论坛数据表的前缀不是“cdb_”,请修改此处。
  7.         if($gd['gender']) $gender = 'm';
  8.         else $gender = 'f';
  9.         $random = sprintf("%02d",rand(1,$gender=='f'?9:11));//11表示男生头像的个数,9表示女生头像的个数
  10.         $avatar_url = 'images/avatar/'.$gender.'_'.$size.'_'.$random.'.gif';
  11.         //结束,默认头像分男女,且随机选择,作者仝飞,支持网站www.kxss.net
复制代码
说明:uchome调用头像并非通过avatar.php文件,此处修改主要是为discuz的头像调用服务,因此,此处头像男女的区分是根据discuz会员数据表的记录确定的。

第三步:修改home\source目录下function_common.php文件(不懂php的可以直接下载我附件中的同名文件覆盖),修改1566行
  1. global $_SCONFIG, $_SN;
复制代码
修改为
  1. global $_SGLOBAL, $_SCONFIG, $_SN;//默认头像分男女,且随机选择,作者仝飞,支持网站www.kxss.net
复制代码

修改1570行
  1. eturn $returnsrc ? UC_API.'/data/avatar/'.$avatarfile : '<img src="'.UC_API.'/data/avatar/'.$avatarfile.'" onerror="this.onerror=null;this.src=\''.UC_API.'/images/noavatar_'.$size.'.gif\'">';
复制代码
修改为:
  1. //默认头像分男女,且随机选择,作者仝飞,支持网站www.kxss.net
  2.         $query = $_SGLOBAL['db']->query("SELECT sex FROM ".tname('spacefield')." WHERE uid='$uid' LIMIT 1");
  3.         if($gd = $_SGLOBAL['db']->fetch_array($query)) {
  4.                 if($gd['sex']==1) $gender = 'm';
  5.                 else $gender='f';
  6.         }else $gender = rand(1,2)==2?"f":"m";
  7.         $random = sprintf("%02d",rand(1,$gender=='f'?9:11));//11表示男生头像的个数,9表示女生头像的个数
  8.         $randavatar = '/images/avatar/'.$gender.'_'.$size.'_'.$random.'.gif';
  9.         return $returnsrc ? UC_API.'/data/avatar/'.$avatarfile : '<img src="'.UC_API.'/data/avatar/'.$avatarfile.'" onerror="this.onerror=null;this.src=\''.UC_API.$randavatar.'\'">';
  10.         //结束默认头像分男女,且随机选择,作者仝飞,支持网站www.kxss.net
复制代码
OK,搞定收工,更新缓存,刷新页面,看看那些没有上传头像的用户头像吧,是不是不在千篇一律了?

评分

4

查看全部评分

abcnic18 发表于 2009-10-22 10:59:42 | 显示全部楼层
沙发支持一个
回复

使用道具 举报

 楼主| zuimengt 发表于 2009-10-22 11:19:30 | 显示全部楼层
笨的要死了

自己的沙发都没有抢到~~~~

开心上社,上社人的家园……
回复

使用道具 举报

 楼主| zuimengt 发表于 2009-10-23 16:08:49 | 显示全部楼层
这么好帖,居然没人顶,自己顶~~~~
回复

使用道具 举报

xp1985718 发表于 2009-10-23 16:23:08 | 显示全部楼层
如果注册时没写男女 会显示什么?
回复

使用道具 举报

Gnagno 发表于 2009-10-23 16:25:48 | 显示全部楼层
不错,我收藏下
回复

使用道具 举报

jacky_sg 发表于 2009-10-23 16:51:30 | 显示全部楼层
支持一下楼主
回复

使用道具 举报

sealei 发表于 2009-10-23 18:29:30 | 显示全部楼层
好帖留名
顶楼主
回复

使用道具 举报

cdkxw 发表于 2009-10-25 00:46:18 | 显示全部楼层
支持一下楼主
回复

使用道具 举报

 楼主| zuimengt 发表于 2009-10-25 16:37:24 | 显示全部楼层
uchome的关于男女的字段名称有点恶心——sex,该字段默认值是0,当该字段值为1时,表示是男性,2表示女;我的程序中if($gd['sex']==1) $gender = 'm';else $gender = 'f'; 就是除非该字段值是1,表示用户是男性,其它值无论是0还是2,都表示女。(discuz好一点,该字段名gender)

因此,像楼上说的,如果注册的时候没有选择男女,插件默认用户是女的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 16:46 , Processed in 0.028622 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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