功能菜单

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

2017-9-26 0 PHP代码 蓝优

本次教程由蓝优网整理发布:

先判断该条评论是否填写了邮箱,未填写则使用默认;若填写了,再判断其中是否含有“@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头像的哦!

本站声明

独乐乐不如众乐乐,您分享的干货是给予本站最大的支持和鼓励也是大家的福利! 本站承诺:投稿一旦通过会给予投稿人1~20元红包作为奖励,内容质量决定于你的红包数量! 正常审核时间为每天:9:00~19:00 投稿邮箱:1410469560@qq.com 提示:本站使用两种模式方法投稿:邮箱投稿与会员投稿,性质一样!

投稿须知

1.投稿可带个人QQ/Q群等宣传信息 不可带第三方网址! 2.不收录:色情/入侵/FD/反动/擦边球等相关违法内容,一旦发现直接提交网警处理。 3.不要尝试玩套路,故意教程做得不详细骗人气或软件发布后马上开启更新,发现一次永久屏蔽。 4.投稿不要群发邮件这样导致站长审核困难,发现永久拉黑投稿人邮箱不作解释! 5.为保障教程的清晰度,请使用《屏幕录像专家》这款软件进行录制。 6.请勿上传病毒木马,否则可能导致您的账号被封,IP段被封 永远无法投稿。 7.投稿信息请认真填写,我们会在后台第一时间审核,审核通过后可在首页展示您的教程。

投稿格式

标题: 内容: 截图: 你的支付宝收款账号或微信收款账号:

最终解释权归本站所有。