解决 Typecho 后台头像被墙的问题


起因

Typecho 默认使用的是 gravatar 的头像,这个东西会根据用户的邮箱去调用你的头像,有两个问题:一是这个需要用户去主动上传,二是这个东西在大天朝是访问不到的,用户无法使用无法上传获取头像。

主题

Akina 在主题评论模块设计的时候就考虑到 gravatar 可能并不太适合国内用户。但是又不能完全不用,会让有“魔法”的用户,体验下降。
考虑后使用 gravatar + QQ头像的 方案。及QQ邮箱用户优先使用QQ头像,其余用户使用 gravatar 头像。

Typecho

早在1.2.0版本之前我就注意到有这个问题,那个时候并没有注意,那就现在来改改。
找到var/Typecho/Common.php 大概800多行 替换面这一段代码。

if (defined('__TYPECHO_GRAVATAR_PREFIX__')) {
  $url = __TYPECHO_GRAVATAR_PREFIX__;
} else {
  $url = $isSecure ? 'https://secure.gravatar.com' : 'http://www.gravatar.com';
  $url .= '/avatar/';
}

if (!empty($mail)) {
  $url .= md5(strtolower(trim($mail)));
}

替换为

if (defined('__TYPECHO_GRAVATAR_PREFIX__')) {
  $url = __TYPECHO_GRAVATAR_PREFIX__;
} else {
  $url = $isSecure ? 'https://gravatar.loli.net' : 'http://gravatar.loli.net';
  $url .= '/avatar/';
}
if (!empty($mail)) {
  if(preg_match('|^[1-9]\d{4,10}@qq\.com$|i',$mail)){
    $url = '//q.qlogo.cn/g?b=qq&nk=' . explode("@",$mail)[0]. '&s=160';
  }else{
    $url .= md5(strtolower(trim($mail)));
  }
}

效果图

声明:纸盒博客|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - 解决 Typecho 后台头像被墙的问题


Carpe Diem and Do what I like