Gravatar是Globally Recognized Avatar的缩写,意为“全球通用头像”,如果在Gravatar的服务器上放置了你自己的头像,只要提供你与这个头像关联的Email地址,就能够显示出你的Gravatar头像来

Gravatar的概念首先是在国外的独立WordPress博客中兴起的,当你在网站留言时,网站都会根据你所提供的Email地址为你显示出匹配的头像

当然Typecho也是默认有支持Gravatar头像的功能

Typecho被Gravatar头像拖慢了访问速度,是因为Typecho使用的Gravatar的镜像默认是国外镜像,国内访问极其不稳定

目前可用Gravatar国内镜像
zeruns's Blog的镜像源: https://gravatar.zeruns.tech/avatar/
V2EX源(推荐):https://cdn.v2ex.com/gravatar/
Loli源:https://gravatar.loli.net/avatar/
极客族:https://sdn.geekzu.org/avatar/
调用
分析Typecho输出Gravatar代码,如下

可以看到如果常量TYPECHO_GRAVATAR_PREFIX没有定义,则Gravatar使用https://secure.gravatar.com或http://www.gravatar.com,如果定义了就使用TYPECHO_GRAVATAR_PREFIX常量 的值,我们只需要定义一下TYPECHO_GRAVATAR_PREFIX常量就可以啦

/**
 * 获取gravatar头像地址 
 * 
 * @param string $mail 
 * @param int $size 
 * @param string $rating 
 * @param string $default 
 * @param bool $isSecure 
 * @return string
 */
public static function gravatarUrl($mail, $size, $rating, $default, $isSecure = false)
{
    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;
}

在站点根目录下的config.inc.php文件加入如下代码

/** 更换头像源 */
define('__TYPECHO_GRAVATAR_PREFIX__', 头像源);

例如

/** 更换头像源 */
define('__TYPECHO_GRAVATAR_PREFIX__', 'https://cdn.v2ex.com/gravatar/');

作者:https://kevinlu98.cn/archives/32.html