马春杰杰 Exit Reader Mode

修改DUX主题的Gravatar头像默认源

前几天突然发现Gravatar的头像突然失效了,本来以为正常抽风,结果一直到今天都是坏的,看着ico一直转圈圈,实在是受不了了。

正常来说,我应该已经设置了使用duoshuoGravatar源,不过前端地址仍然是Gravatar的SSL源,一开始百思不得其解。到后来,甚至直接替换掉了$avatar的字符串,直到最后才发现,原来是UCenter插件的原因,原来这个插件也对Gravatar源进行了替换,怪不得一直失效。不过这里还是说一下我用到的这两种替换的方法。

1 修改评论头像

1.1 在最后调用的时候替换对应字符串

这可能是最傻瓜的操作了,不过不灵活,但是也能实现我们的要求。

打开主题目录下的functions-theme.php文件,然后找到return str_replace(' src=', ' data-src=', $avatar)这句,可以看到,最后调用头像的时候,就是它在使能。我一开始用的笨办法是在调用avatar之前,先把相关地址替换掉,也就是在这句之前加上:

			$avatar = str_replace(array("secure.gravatar.com/avatar", "www.gravatar.com/avatar", "0.gravatar.com/avatar", "1.gravatar.com/avatar", "2.gravatar.com/avatar"), "cdn.v2ex.com/gravatar", $avatar);
			$avatar = str_replace(array("s=100"), "s=100&r=PG&d=monsterid", $avatar);

就可以了。

1.2 回归正常修改模式

下面就是正常的修改方式了,还是打开functions-theme.php文件,找到下面对应的改一下就可以了。

if( !_hui('gravatar_url') || _hui('gravatar_url') == 'ssl' ){
    add_filter('get_avatar', '_get_ssl2_avatar');
}else if( _hui('gravatar_url') == 'duoshuo' ){
    add_filter('get_avatar', '_duoshuo_get_avatar', 10, 3);

}

//官方Gravatar头像调用ssl头像链接
// function _get_ssl2_avatar($avatar) {
//     $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2&d=mm" class="avatar avatar-$2" height="50" width="50">',$avatar);
//     return $avatar;
// }
function _get_ssl2_avatar($avatar) {
    $avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)&.*/','<img src="https://cdn.v2ex.com/gravatar/$1?s=$2&d=mm" class="avatar avatar-$2" height="50" width="50">',$avatar);
    return $avatar;
}

//多说官方Gravatar头像调用
function _duoshuo_get_avatar($avatar) {
    $avatar = str_replace(array("secure.gravatar.com", "www.gravatar.com", "0.gravatar.com", "1.gravatar.com", "2.gravatar.com"), "gravatar.duoshuo.com", $avatar);
    return $avatar;
}

2 修改个人中心头像

如果你装了UC,那可能按照上面的方法运行之后,个人中心的头像依旧是原始的Gravatar链接,此时只需要打开plugins/ucenter-and-market/func/functions.php文件,然后修改为以下内容即可:

function um_get_ssl_avatar($avatar) {

	$avatar = preg_replace('/.*\/avatar\/(.*)\?s=([\d]+)(&?.*)/','<img src="https://cdn.v2ex.com/gravatar/$1?s=$2&r=PG&d=monsterid" class="avatar avatar-$2" height="$2" width="$2">',$avatar);	
	return $avatar;
}

 

本文最后更新于2021年3月15日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!