Gravatar头像被墙的解决方法

2016年08月10日 技术文章 13 views
方法一:直接调用多说的头像缓存
将下面的代码复制到模板文件module.php
  1. <?php
  2. //blog-tool:获取Gravatar头像
  3. function DuoshuoGravatar($email, $s = 40, $d = 'mm', $g = 'g') {
  4.         $hash = md5($email);
  5.         $avatar = "http://gravatar.duoshuo.com/avatar/$hash?s=$s&d=$d&r=$g";
  6.         return $avatar;
  7. }
  8. ?>
复制代码
module.php中所有的getGravatar替换为DuoshuoGravatar

方法二:将多说的头像缓存到本地
将下面的代码复制到模板文件module.php
  1. <?php
  2. //Custom:获取模板目录名称
  3. function get_template_name(){
  4.     $template_name = str_replace(BLOG_URL,"",TEMPLATE_URL);
  5.     $template_name = str_replace("content/templates/","",$template_name);
  6.     $template_name = str_replace("/","",$template_name);
  7.     return $template_name;
  8. }
  9. ?>
  10. <?php
  11. //blog-tool:获取Gravatar头像并缓存到本地
  12. function MyGravatar($email, $s=40, $d='monsterid', $r='g') {
  13.     $f = md5($email);
  14.     $a = TEMPLATE_URL.'avatar/'.$f.'.jpg';
  15.     $e = EMLOG_ROOT.'/content/templates/'.get_template_name().'/avatar/'.$f.'.jpg';
  16.     $t = 1296000; //15天,单位:秒
  17.     if (empty($d)) $d = BLOG_URL.'avatar/default.jpg';
  18.     if (!is_file($e) || (time() - filemtime($e)) > $t ) {
  19.         //当头像不存在或者超过15天才更新
  20.         $g = sprintf("http://gravatar.duoshuo.com",(hexdec($f{0})%2)).'/avatar/'.$f.'?s=48&d='.$d.'&r='.$r;
  21.         copy($g,$e); $a=$g; //新头像copy时, 取gravatar显示
  22.     }
  23.     if (filesize($e) < 500) copy($d,$e);
  24.     return $a;
  25. }
  26. ?>
复制代码
模板文件夹新建名为avatar的文件夹,将module.php中的getGravatar替换为MyGravatar
修改完成后刷新两次网页,查看头像路径为本地路径即设置成功。


如gravatar网站恢复正常,不需使用上述功能时,删除上述代码,将MyGravatar或者DuoshuoGravatar替换为原来的getGravatar即可。

打赏
扫描二维码
扫描微信