Emlog使用qq头像作为评论头像

  • 内容
  • 相关

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

本代码依托于emer大神些的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;
}
?>

然后将原来的<?php echo getGravatar($comment['mail']); ?>改为<?php echo eflyGravatar($comment['mail']); ?> 相应的,子评论函数function blog_comments_children($comments, $children)中也做上述改动。 然后在你当前模板文件夹下新建一个"avatar"空文件夹用于放置缓存下来的头像,在当前模板文件夹下的images文件夹中放一个“avatar.jpg”文件用作未填写邮箱时的默认头像。 注:其中的“eflyGravatar”函数为本功能核心函数,且其依托于其上面的两个函数。当然,直接使用<?php echo myGravatar($comment['mail']); ?>这个函数也行,也能将头像缓存到本地,但是用不了qq头像的哦!

本文标签:

版权声明:若无特殊注明,本文皆为《森七》原创,转载请保留文章出处。

本文链接:Emlog使用qq头像作为评论头像 - http://www.mosq.cn/post-133.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注。采用输入QQ快速评论,有人回复邮件通知。

评论

13条评论
  1. avatar

    Tout-An尘。 Lv.1 Chrome 57.0.2987.133 Chrome 57.0.2987.133 Windows Windows 回复

    看看

    1. avatar

      eric Lv.1 Chrome 58.0.3029.110 Chrome 58.0.3029.110 Windows 8.1 x64 Edition Windows 8.1 x64 Edition 回复

      试试

      1. avatar

        Angel昔沐 Lv.1 回复

        还是没找到module.php文件,求教在哪文件夹里

        1. 森七 回复

          回复了Angel昔沐:就在模板文件里[程序猿]

        1. avatar

          久伴 Lv.3 回复

          学习了哈

          1. avatar

            逾期不候。 Lv.2 回复

            不错很好很棒

            1. 感谢经历! Lv.1 回复

              回复了逾期不候。:哈哈哈

            1. 森七 回复

              回复了纯洁博客:有用就好[调戏]

          2. avatar

            千殇 Lv.1 回复

            好东西[微笑]