[教程] Typecho 输出qq头像(不暴露qq号)或者自定义源gravatar的头像(进阶)

查看: 440|回复: 3
1
crll 发表于 2023-4-5 17:13:49
此篇文章的代码完成度高且选择多,几乎不需要修改,直接用即可。

gravatar头像源设置
此段代码放进functions.php里的function themeConfig函数内
  1. $gravatars = new Typecho_Widget_Helper_Form_Element_Select('gravatars',[
  2. 'www.gravatar.com/avatar' => 'gravatar的www源',
  3. 'cn.gravatar.com/avatar' => 'gravatar的cn源',
  4. 'secure.gravatar.com/avatar' => 'gravatar的secure源',
  5. 'sdn.geekzu.org/avatar' => '极客族源',
  6. 'gravatar.proxy.ustclug.org/avatar' => '中科大源[不建议]',
  7. 'cdn.v2ex.com/gravatar' => 'v2ex源',
  8. 'dn-qiniu-avatar.qbox.me/avatar' => '七牛源[不建议]',
  9. 'gravatar.helingqi.com/wavatar' => '禾令奇源[建议]',
  10. 'gravatar.loli.net/avatar' => 'loli.net源'],
  11.     'gravatar.helingqi.com/wavatar','<span>gravatar头像源</span>','替换Gravatar头像的默认地址。<br>替换后可提升加载速度,默认使用<b>禾令奇[建议]源</b>。');
  12. $form->addInput($gravatars->multiMode());
复制代码


核心函数
此段代码推荐放到functions.php最后面,要自己写个class Tool{}放进去。
  1. /**
  2. * 输出qq头像(不暴露qq号)或者自定义源gravatar的头像
  3. *
  4. * @return story
  5. */
  6. public static function avatr($mail, int $size = 100, bool $out = false)
  7. {
  8.     $Op_avatr = Typecho_Widget::widget('Widget_Options')->gravatars;
  9.     $Str = str_replace('@qq.com','',$mail);
  10.     $avatr = '';
  11.     if(stristr($mail,'@qq.com')&&is_numeric($Str)&&strlen($Str)<11&&strlen($Str)>4){
  12.         $url = 'https://s.p.qq.com/pub/get_face?img_type=3&uin='.$Str;
  13.         $api = get_headers($url,true)['Location'];
  14.         $json_api = json_encode($api);
  15.         $ex_api = explode("&k=",$json_api)[1];
  16.         $k_value = explode("&s=",$ex_api)[0];
  17.         $avatr = 'https://q.qlogo.cn/g?b=qq&k='.$k_value.'&s='.$size;
  18.     }else{
  19.         $mail = md5($mail);
  20.         $avatr = 'https://'.$Op_avatr.'/'.$mail.'?s='.$size;
  21.     }
  22.     if ($out === true) {
  23.         return $avatr;
  24.     }else{
  25.         echo $avatr;
  26.     }
  27. }
复制代码

使用方法
  1. <?php Tool::avatr(mail,size,out); ?>
复制代码

数说明:
mail为邮箱地址:$this->user->mail、$this->author->mail、$comments->mail、'12345@qq.com',诸如此类
size为尺寸:正整数型,默认100
out为输出类型:默认false为echo,true则为return
但后两个函数一般不需要填写

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
博主论坛 bzlt.net
沐辰 发表于 2023-4-5 21:51:39
可以
once 发表于 2023-4-5 23:45:44
大佬。怎么设置的
叶开 发表于 2023-4-6 11:55:06
学习了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于本站联系我们FAQ友情链接免责声明生存法则

Build with for "make" Copyright © 2020-2022. Powered by Discuz! GMT+8, 2024-4-20 02:11

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