判断该条评论是否填写了邮箱,未填写则使用默认;若填写了,再判断其中是否含有“qq.com”;然后去除“qq.com”并判断余下的部分是否为qq号,是则获取相应的头像并缓存下来,否则使用Gravatar头像。

  本代码依托于“get_template_name()”和“myGravatar()”函数。

  以默认模板为例,打开module.php,找到function blog_comments($comments),在其之前添加函数:

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


文章回复.png管理员已设置登录后刷新可查看