Typecho 默认使用 Gravatar 作为用户头像服务,这对于许多用户来说可能是一个方便且熟悉的选择。然而,有些用户可能更倾向于使用他们的 QQ 头像作为 Typecho 博客的头像,特别是当他们主要使用 QQ 作为日常交流工具时。为了实现这一功能,您可以对 Typecho 进行一些定制开发,以支持根据用户输入的邮箱地址自动调用 QQ 头像或 Gravatar 头像。
具体来说,当用户在 Typecho 后台设置头像时,系统可以检测他们输入的邮箱地址。如果邮箱地址是 QQ 邮箱(通常以 @qq.com 结尾),则系统会自动调用该邮箱对应的 QQ 头像。如果邮箱不是 QQ 邮箱,则系统会回退到使用 Gravatar 头像。
这种实现方式既保留了 Gravatar 头像的便利性,又增加了对 QQ 头像的支持,从而满足了不同用户的需求。对于使用 QQ 作为主要交流工具的用户来说,他们的 Typecho 博客将更具个性化和辨识度。
正文开始
Typecho默认头像来自Gravatar,没设置过头像就不怎么样,想替换为QQ头像。实现的效果:输入QQ邮箱,调用QQ头像;输入普通邮箱,调用Gravatar头像。
修改Typecho目录下的var/Typecho/common.php,关于获取Gravatar的代码
找到以下代码:搜索关键词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://secure.gravatar.com' : 'http://www.gravatar.com';
$url .= '/avatar/';
}
if (!empty($mail)) {
$url .= md5(strtolower(trim($mail)));
}
$url .= '?s=' . $size;
$url .= '&r=' . $rating;
$url .= '&d=' . $default;
}
return $url;
}