e起飞young
一个前端码农的技术博客
emlog评论:Gravatar头像失效的解决方法
[ 2015/01/02 ]

方法一:不更改程序内核

直接将下面的代码复制到模板文件module.php中

<?php
//blog-tool:获取Gravatar头像
function myGravatar($email, $s = 40, $d = 'mm', $g = 'g') {
	$hash = md5($email);
	$avatar = "http://cn.gravatar.com/avatar/$hash?s=$s&d=$d&r=$g";
	return $avatar;
}
?>

亦可以使用:$avatar = "http://secure.gravatar.com/avatar/$hash?s=$s&d=$d&r=$g";

而后将module.php中所有的<?php echo getGravatar($comment['mail']); ?>替换为<?php echo myGravatar($comment['mail']); ?>即可。

方法二:将Gravatar的头像缓存到本地

将下面的代码复制到模板文件module.php中:

<?php
//Custom:获取模板目录名称
function get_template_name(){
    $template_name = str_replace(BLOG_URL,"",TEMPLATE_URL);
    $template_name = str_replace("content/templates/","",$template_name);
    $template_name = str_replace("/","",$template_name);
    return $template_name;
}
?>
<?php
//blog-tool:头像缓存到本地
function myGravatar($email, $s = 40, $d = 'monsterid', $g = 'g'){
	$f = md5($email);
	$a = TEMPLATE_URL.'avatar/'.$f.'.jpg';
	$e = EMLOG_ROOT.'/content/templates/'.get_template_name().'/avatar/'.$f.'.jpg';
	$t = 1296000;//15天,单位:秒
	if (empty($d)){
		$d = TEMPLATE_URL.'images/avatar.jpg';
	}
	if(!is_file($e) || (time() - filemtime($e)) > $t ){//当头像不存在或者超过15天才更新
		$g = sprintf("http://secure.gravatar.com",(hexdec($f{0})%2)).'/avatar/'.$f.'?s='.$s.'&d='.$d.'&r='.$g;
		copy($g,$e);
		$a = $g;
	}
	if(filesize($e) < 500){
		copy($d,$e);
	}
	return $a;
}
?>

然后在模板文件夹中新建名为avatar的文件夹,将module.php中的getGravatar替换为MyGravatar。 修改完成后刷新两次网页,查看头像路径为本地路径即设置成功。

方法三:修改位置在/include/lib/function.base.php,找到以下代码

/**
 * 获取Gravatar头像
 * http://en.gravatar.com/site/implement/images/
 * @param $email
 * @param $s size
 * @param $d default avatar
 * @param $g
 */
function getGravatar($email, $s = 40, $d = 'mm', $g = 'g') {
	$hash = md5($email);
	$avatar = "http://www.gravatar.com/avatar/$hash?s=$s&d=$d&r=$g";
	return $avatar;
}

把其中的www.gravatar.com修改为gravatar.duoshuo.com或者cn.gravatar.com或者secure.gravatar.com均可,如果你想让匿名头像显示的其它样式,只需要把$d='mm'里的mm替换成monsterid就可以了。

方法四:

emlog使用qq头像作为评论头像并缓存到本地

有朋自远方来...评论一下呗O(∩_∩)O

  • 评论(3)

    锟斤拷锟斤拷 [ 回复 ] 2楼
    2020-01-15 18:54

    我不是很会弄 一直失败 怎么回事

    厦门维护网 [ 回复 ] 1楼
    2017-12-20 14:52

    这个怎么实现,我改了还是不行?

    e起飞young 博主大人 [ 回复 ]
    2017-12-20 14:59

    @厦门维护网:你是用的哪种方法呢?我看了下你的网站用的是多说,但是多说已经关闭了“...非常遗憾的向大家宣布多说项目即将关闭。我们将于2017年6月1日正式关停服务...”,你得用其他的才行。

    搜索