前言
Typecho默认头像来自Gravatar,没设置过头像就丑丑的,想替换为QQ头像。之前用的WordPress,对Typecho不是很熟悉,于是进行百度。
Typecho似乎百度相关资料特别少,唯一能找到的是巷子工坊的两篇文章,但他实现的效果似乎仅支持QQ邮箱,普通邮箱反而不适用。
经过反复测试,最终解决办法如下:
使用方法
修改Typecho目录下var/Typecho/common.php,在大约932行,关于获取Gravatar的代码
找到以下代码:
public static function gravatarUrl($mail, $size, $rating, $default, $isSecure = false) { if (defined('__TYPECHO_GRAVATAR_PREFIX__')) { $url = __TYPECHO_GRAVATAR_PREFIX__; } else { $url = $isSecure ? 'https://dn-qiniu-avatar.qbox.me' : 'http://gravatar.proxy.ustclug.org'; $url .= '/avatar/'; } if (!empty($mail)) { $url .= md5(strtolower(trim($mail))); } $url .= '?s=' . $size; $url .= '&r=' . $rating; $url .= '&d=' . $default; return $url; }
替换成:
public static function gravatarUrl($mail, $size, $rating, $default, $isSecure = false) { $reg = "/^\d{5,11}@[qQ][Qq]\.(com)$/"; if (preg_match($reg, $mail)) { $img = explode("@", $mail); $url = "//q2.qlogo.cn/headimg_dl?dst_uin={$img[0]}&spec=100"; } else { if (defined('__TYPECHO_GRAVATAR_PREFIX__')) { $url = __TYPECHO_GRAVATAR_PREFIX__; } else { $url = $isSecure ? 'https://cravatar.cn' : 'http://cravatar.cn'; $url .= '/avatar/'; } if (!empty($mail)) { $url .= md5(strtolower(trim($mail))); } $url .= '?s=' . $size; $url .= '&r=' . $rating; $url .= '&d=' . $default; } return $url; }
实现的效果:输入QQ邮箱,调用QQ头像;输入普通邮箱,调用Gravatar头像。
更换Gravatar头像源
使用官方头像源会拖慢国内的访问速度
在网站根目录下的 config.inc.php 文件,加入以下代码。
define('__TYPECHO_GRAVATAR_PREFIX__', 'https://gravatar.loli.net/avatar/'); //更换头像源
这里使用的是 loli.net 的头像源,如果有需要也可以换成别的。
P.S 直接替换上边的地址就行了 http://gravatar.ihuan.me/avatar/ https://gravatar.proxy.ustclug.org/ https://cdn.v2ex.com/gravatar/ http://dn-qiniu-avatar.qbox.me/avatar
说点什么