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

无毒有藕 随笔 2024-01-22

起因

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

主题

在主题评论模块设计的时候就考虑到 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)));
  }
}
Typecho头像被墙的解决方法
https://blog.jichun29.cn/2588.html
首先下载最新开发版本的TYPECHO,然后,在config.inc.php自定义如下:
/* 自定义gravatar url前缀 /
define('__TYPECHO_GRAVATAR_PREFIX__', 'http://gravatar.duoshuo.com/avatar/');
记录几个文件:
默认头像:var/typecho/common.php 第952行;可使用参数:mm(空白的头像)identicon(象素小人)monsterid(小怪物)wavatar(小人)retro(8bit小人)
评论的几个设置:var/Widget/Comments/Archive.php 可设置头像默认尺寸、评论的审核文字等。
https://shangjixin.com/archives/typecho-edit-gravatar.html
NEXT
分享github国内镜像网址

评论(1)

发布评论
  1. 欢迎加入 Typecho 大家族