修改typecho头像网址

替换Gravatar国内源,解决国外网站无法访问问题。

1、源文件开头定义。

此法影响全局,优于函数显示,同时对后台管理面板头像有效。
直接打开 Typecho 安装目录下的 config.inc.php 文件,加入以下代码即可(加在任何位置都可

define('__TYPECHO_GRAVATAR_PREFIX__','https://cdn.v2ex.com/gravatar/');

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

2、自定义 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 头像需单独配置

3、主题函数修改法。

此法不同于以上2种,只在该主题下有效,可后台设置多个源切换。

$GravatarUrl = new Typecho_Widget_Helper_Form_Element_Radio(
    'GravatarUrl',
    [
        false => _t('avatar官方源'),
        'https://gravatar.wp-china-yes.net/avatar/' => _t('china镜像源'),
        'https://cdn.sep.cc/avatar/' => _t('sepcc镜像源')
    ],
    false,
    _t('Gravatar头像源'),
    _t('默认使用官方源之头像')
);
$form->addInput($GravatarUrl);

该法可以在主题设置中增加按钮进行切换,后台体验极佳!

注意,如果使用第一种方法,其他方法可能会失效!

4、使用 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/');

可以搭配方法3在主题中使用。

参考:

  1. 三种方法教你解决 Typecho 的 Gravatar 头像显示问题
  2. 修改typecho全球通用头像教程
xuechun
THE END

标签: typecho

本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。


相关文章