如何解决Gravatar头像不显示

虾壳
2022-05-09 / 0 评论 / 180 阅读 / 正在检测是否收录...

Typecho 评论默认使用的是 Gravatar 头像,(博主主题自带 qq 邮箱评论调取 QQ 头像,所以 qq 邮箱用户正常显示)但因为 Gravatar 网站总是被墙,你会看到这样

博主总结了三种方法,教你解决 Typecho 的 Gravatar 头像显示问题

方法一:更改 Gravatar 为国内 CDN 服务
具体步骤:在根目录程序配置文件 config.inc.php 最后面插一段

define('__TYPECHO_GRAVATAR_PREFIX__', 'https://gravatar.cat.net/avatar/');

效果如下

不足:改完之后可以正常显示了,但又出现一个新问题,有 Gravatar 账号的人太少了,没账号的显示千篇一律的蓝色头像,果断放弃

方法二:自定义 Gravatar 默认头像(参照大佬文章 )
具体步骤:找到网站根目录下的 /var/Typecho/Common.php 文件大概 920 行左右,替换为如下

    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;
    }

替换为

    public static function gravatarUrl($mail, $size, $rating, $default, $isSecure = false)
    {
        if (defined('__TYPECHO_GRAVATAR_PREFIX__')) {
            $url = __TYPECHO_GRAVATAR_PREFIX__;
        } else {
            $url = $isSecure ? '你的头像地址' : '备用头像地址';
        }
        return $url;
    }

效果如下

不足:所有头像都显示默认头像,效果单一,要显示 QQ 头像需单独配置

方法三:使用 Cravatar 自动匹配机制解决 Gravatar 被墙和 QQ 邮箱用户显示问题
官方解释: 独有的三级头像匹配机制(当访客请求自己的头像时,我们会按此顺序分三级匹配头像:Cravatar->Gravatar->QQ 头像,这平均可以为 70% 的访客提供准确的头像)

具体步骤:在根目录程序配置文件 config.inc.php 最后面插一段

/**
 * 替换Gravatar头像为Cravatar头像
 *
 * Cravatar是Gravatar在中国的完美替代方案,你可以在https://cravatar.cn更新你的头像
 */
define('__TYPECHO_GRAVATAR_PREFIX__', 'https://cravatar.cn/avatar/');

效果如下:

0

打赏

海报

正在生成.....

评论 (0)

取消