1560天 瑾忆

重要的人越来越少,剩下的人也越来越重要 ​​

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

发布于 4年前 / 2.3k 次围观 / 2 条评论 / Emlog / 瑾忆

思路:先判断该条评论是否填写了邮箱,未填写则使用默认;若填写了,再判断其中是否含有“@qq.com”;然后去除“@qq.com”并判断余下的部分是否为qq号,是则获取相应的头像并缓存下来,否则使用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;
}
?>
<?php
//blog-tool:获取qq头像并缓存到本地
function eflyGravatar($email,$s = 40) {
if(empty($email)){
$eflyGravatar = TEMPLATE_URL.'images/avatar.jpg';
}
else if(strpos($email,'@qq.com')){
$qq = str_replace("@qq.com","",$email);
if(is_numeric($qq) && strlen($qq) > 4 && strlen($qq) < 13){
$f = md5($qq);
$a = TEMPLATE_URL.'avatar/'.$f.'.jpg';
$e = EMLOG_ROOT.'/content/templates/'.get_template_name().'/avatar/'.$f.'.jpg';
$t = 1296000;
if (empty($d)){
$d = TEMPLATE_URL.'images/avatar.jpg';
}
if(!is_file($e) || (time() - filemtime($e)) > $t ){
$g = sprintf("http://q.qlogo.cn").'/headimg_dl?dst_uin='.$qq.'&spec='.$s;
copy($g,$e);
$a = $g;
}
if(filesize($e) < 500){
copy($d,$e);
}
$eflyGravatar = $a;
}
else{
$eflyGravatar = myGravatar($email);
}
}
else{
$eflyGravatar = myGravatar($email);
}
return $eflyGravatar;
}
?> 

然后将原来的

<?php echo getGravatar($comment['mail']); ?>
改为
<?php echo eflyGravatar($comment['mail']); ?>
 共要替换两个。 然后在你当前模板文件夹下新建一个"avatar"空文件夹用于放置缓存下来的头像,在当前模板文件夹下的images文件夹中放一个“avatar.jpg”文件用作未填写邮箱时的默认头像。 

  1. 4年前 (2017-05-17)
    @

    还是不错的哦~博客很精致

    • 4年前 (2017-05-18)
      @ NO

      @小东:嘻嘻