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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[经验] 农牧场头像问题修复(修复只显示默认头像)(终极版)

[复制链接]
o5786486 发表于 2009-10-31 20:14:02 | 显示全部楼层 |阅读模式
本帖最后由 o5786486 于 2009-10-31 20:36 编辑

之前有许多人提出来的头像补丁大多都有问题
不是显示不出来 就是一直显示默认头像
我看了一下2.0的头像获取方式 是直接取得ucenter头像的文件
而1.5是使用ucenter中的avatar.php来调用
发现用1.5版的若没有头像自动会转向默认头像
因此本补丁采用1.5版的头像获取方式
-----------------------------------------------------------
农场
找到newfarmjson.php

  1. function unicode_encodebig5( $name )
  2. {
  3.     $name = iconv( "big5", "UCS-2", $name );
  4.     $len = strlen( $name );
  5.     $str = "";
  6.     $i = 0;
  7.     for ( ; $i < $len - 1; $i += 2 )
  8.     {
  9.         $c = $name[$i];
  10.         $c2 = $name[$i + 1];
  11.         if ( 0 < ord( $c ) )
  12.         {
  13.             $c2 = base_convert( ord( $c2 ), 10, 16 );
  14.             if ( strlen( $c2 ) == 1 )
  15.             {
  16.                 $c2 = "0".$c2;
  17.             }
  18.             $str .= "\\u".base_convert( ord( $c ), 10, 16 ).$c2;
  19.         }
  20.         else
  21.         {
  22.             $str .= $c2;
  23.         }
  24.     }
  25.     return $str;
  26. }
复制代码
在下面添加

  1. function avatarfarm($uid, $size='small') {
  2. global $_SCONFIG;

  3. $type = empty($_SCONFIG['avatarreal'])?'virtual':'real';
  4. if(empty($_SCONFIG['uc_dir'])) {
  5.   return UC_API.'/avatar.php?uid='.$uid.'&size='.$size.'&type='.(empty($_SCONFIG['avatarreal'])?'virtual':'real');
  6. } else {
  7.   if(ckavatar($uid)) {
  8.    return UC_API.'/data/avatar/'.avatarfile($uid, $size, $type);
  9.   } else {
  10.    return UC_API."/images/noavatar_$size.gif";
  11.   }
  12. }
  13. }
复制代码
接着找出所有有使用avatar函数的代码
这里举例:
找到
  1. avatar( $_SGLOBAL[supe_uid], "small", TRUE )
复制代码
在"avatar"的后面加上"farm"
  1. avatarfarm( $_SGLOBAL[supe_uid], "small", TRUE )
复制代码
改完后再继续搜索
应该会有两个
另一个是
  1. avatar($value[uid], 'small', true)
复制代码
依照上述方法改为
  1. avatarfarm($value[uid], 'small', true)
复制代码
注意:修改完后可能要按一下好友列表旁的刷新按钮才能看到效果
-----------------------------------------------------------
牧场
找到newmc.php
  1. function unicode_encodebig5( $name )
  2. {
  3.     $name = iconv( "big5", "UCS-2", $name );
  4.     $len = strlen( $name );
  5.     $str = "";
  6.     $i = 0;
  7.     for ( ; $i < $len - 1; $i += 2 )
  8.     {
  9.         $c = $name[$i];
  10.         $c2 = $name[$i + 1];
  11.         if ( 0 < ord( $c ) )
  12.         {
  13.             $c2 = base_convert( ord( $c2 ), 10, 16 );
  14.             if ( strlen( $c2 ) == 1 )
  15.             {
  16.                 $c2 = "0".$c2;
  17.             }
  18.             $str .= "\\u".base_convert( ord( $c ), 10, 16 ).$c2;
  19.         }
  20.         else
  21.         {
  22.             $str .= $c2;
  23.         }
  24.     }
  25.     return $str;
  26. }
复制代码
在下面添加
  1. function avatarmc($uid, $size='small') {
  2. global $_SCONFIG;

  3. $type = empty($_SCONFIG['avatarreal'])?'virtual':'real';
  4. if(empty($_SCONFIG['uc_dir'])) {
  5.   return UC_API.'/avatar.php?uid='.$uid.'&size='.$size.'&type='.(empty($_SCONFIG['avatarreal'])?'virtual':'real');
  6. } else {
  7.   if(ckavatar($uid)) {
  8.    return UC_API.'/data/avatar/'.avatarfile($uid, $size, $type);
  9.   } else {
  10.    return UC_API."/images/noavatar_$size.gif";
  11.   }
  12. }
  13. }
复制代码
接着找出所有有使用avatar函数的代码共有三处
找到
  1. avatar( $_SGLOBAL[supe_uid], "small", TRUE )
复制代码
在"avatar"的后面加上"mc"
  1. avatarmc( $_SGLOBAL[supe_uid], "small", TRUE )
复制代码
(估计这种的有两处 另一个可能用搜索会搜索不到 建议您找"$_SGLOBAL[supe_uid],"来试试看)
改完后再继续搜索
  1. avatar($value[uid], 'small', true)
复制代码
改为
  1. avatarmc($value[uid], 'small', true)
复制代码
估计共一处
修改完后可能要按一下好友列表旁的刷新按钮才能看到效果
若有漏掉的请回帖举报一下
还有使用MFYOYO版本的朋友们看二楼
 楼主| o5786486 发表于 2009-10-31 20:15:39 | 显示全部楼层
本帖最后由 o5786486 于 2009-10-31 20:22 编辑

使用MF版本的朋友看这里
找到
  1. function unicode_encodebig5( $name )
  2. {
  3.     $name = iconv( "big5", "UCS-2", $name );
  4.     $len = strlen( $name );
  5.     $str = "";
  6.     $i = 0;
  7.     for ( ; $i < $len - 1; $i += 2 )
  8.     {
  9.         $c = $name[$i];
  10.         $c2 = $name[$i + 1];
  11.         if ( 0 < ord( $c ) )
  12.         {
  13.             $c2 = base_convert( ord( $c2 ), 10, 16 );
  14.             if ( strlen( $c2 ) == 1 )
  15.             {
  16.                 $c2 = "0".$c2;
  17.             }
  18.             $str .= "\\u".base_convert( ord( $c ), 10, 16 ).$c2;
  19.         }
  20.         else
  21.         {
  22.             $str .= $c2;
  23.         }
  24.     }
  25.     return $str;
  26. }
复制代码

下面加入
  1. function avatarfarm($uid, $size='small') {
  2. global $_SCONFIG;

  3. $type = empty($_SCONFIG['avatarreal'])?'virtual':'real';
  4. if(empty($_SCONFIG['uc_dir'])) {
  5.   return UC_API.'/avatar.php?uid='.$uid.'&size='.$size.'&type='.(empty($_SCONFIG['avatarreal'])?'virtual':'real');
  6. } else {
  7.   if(ckavatar($uid)) {
  8.    return UC_API.'/data/avatar/'.avatarfile($uid, $size, $type);
  9.   } else {
  10.    return UC_API."/images/noavatar_$size.gif";
  11.   }
  12. }
  13. }
复制代码

找到
  1. $friendavatarimage = ckavatar($value[uid])?avatar($value[uid], 'small', true):UC_API.'/images/noavatar_small.gif';
复制代码
将它删除
在这段代码下面找到
  1. $friendavatarimage
复制代码
改为
  1. avatarfarm( $value[uid], "small", TRUE )
复制代码
这个大概只有一个
另一个代码
  1. avatar( $_SGLOBAL[supe_uid], "small", TRUE )
复制代码

改为
  1. avatarfarm( $_SGLOBAL[supe_uid], "small", TRUE )
复制代码

即可
回复

使用道具 举报

sunhaoze 发表于 2009-10-31 20:19:50 | 显示全部楼层
我正在琢磨装YOYO3.0的呢,不知道咋装呢,给你顶顶
回复

使用道具 举报

 楼主| o5786486 发表于 2009-10-31 20:25:12 | 显示全部楼层
怎么没什么人顶呢?
回复

使用道具 举报

 楼主| o5786486 发表于 2009-10-31 20:37:14 | 显示全部楼层

好伤心
回复

使用道具 举报

frogsoft 发表于 2009-10-31 20:39:35 | 显示全部楼层
占位。等待编辑
回复

使用道具 举报

dsduyao 发表于 2009-10-31 20:56:14 | 显示全部楼层
感谢,问题已经解决
回复

使用道具 举报

 楼主| o5786486 发表于 2009-10-31 21:07:03 | 显示全部楼层
回复

使用道具 举报

szzzlong 发表于 2009-10-31 22:31:02 | 显示全部楼层
改完后,初始化错误。
回复

使用道具 举报

jacky_sg 发表于 2009-10-31 23:06:20 | 显示全部楼层
改完后,初始化错误。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 06:33 , Processed in 0.036038 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

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