enter image description here

前两天Gravatar突然被墙,本来也没怎么在意,但是网站速度被拖得实在是难以忍受的地步,无奈,只好想一下解决方法,于是昨晚睡觉前百度了下,发现那些解决方案都是Wordpress的,例如@大发最新的解决方案:

function get_ssl_avatar($avatar) {
$avatar = preg_replace('/.*/avatar/(.*)?s=([d]+)&.*/','<img src="https://secure.gravatar.com/avatar/$1?s=$2" class="avatar avatar-$2" height="$2" width="$2" />',$avatar); return $avatar; }
add_filter('get_avatar', 'get_ssl_avatar');

但是Typecho并没有相关的文档,本想把大发的代码修改到TE,但是我不会PHP,看了好半天,翻了下程序源文件,怎么改都不行,于是我只好苦逼的修改源文件去了,希望好基友们看到后帮我鼓捣下。 好了,修改源文件其实也超级简单,只需要一行就可以了,方法如下: 打开

varWidgetAbstractComments.php 文件 在第413行找到$url = $host . '/avatar/';修改为://$url = $host . '/avatar/'; $url = 'https://secure.gravatar.com/avatar/'; 然后保存就行了,就是把上面那个注释掉然后手动加一个链接。

最新版(1.0-14.10.10)的解决方法,同样是打开Comments.php,第397行,将下方代码:

$url = Typecho_Common::gravatarUrl($this->mail, $size, $rating, $default, $this->request->isSecure()); 修改为:

$mailHash = NULL; if (!empty($this->mail)) { $mailHash = md5(strtolower($this->mail)); }
$url = 'https://secure.gravatar.com/avatar/';
if (!empty($this->mail)) {$url .= $mailHash;}
$url .= '?s=' . $size; $url .= '&r=' . $rating;
$url .= '&d=' . $default; //$url = Typecho_Common::gravatarUrl($this->mail, $size, $rating, $default,$this->request->isSecure());

“https://secure.gravatar.com”可以改成其它源。

多说的源:http://gravatar.duoshuo.com

七牛镜像源:http://avacdn.qiniudn.com

七牛镜像SSL源:https://dn-avacdn.qbox.me

当然自己搭建七牛镜像,或者反向代理Gravatar也是比较简单的,就不再赘述。

另外,如果你正在使用“评论墙”功能,那么可以在插件或者主题的function.php中找到如下代码:

$mostactive .= '<img class="avatar" src="http://'.$my_array[rand(0,3)].'.gravatar.com/avatar/'.md5(strtolower($value['mail'])).'?s=40&d=&r=G" /></a></li>';

将其修改为如下:

//$mostactive .= '<img class="avatar" src="http://'.$my_array[rand(0,3)].'.gravatar.com/avatar/'.md5(strtolower($value['mail'])).'?s=40&d=&r=G"/></a></li>';
$mostactive .= '<img class="avatar" src="https://secure.gravatar.com/avatar/'.md5(strtolower($value['mail'])).'?s=40&d=&r=G"/></a></li>';

同样是将默认的注视,然后修改,源地址参考上面的自行修改即可。 另外,我的Wordpress的主题从GoodNice版本后就支持在设置中修改avatar的源了,方法如下:

one

标签: Typecho, Gravatar, 头像, 被墙

已有 20 条评论

  1. 好屌好屌

  2. 为毛我的文件里面没有$url = $host . '/avatar/';

    1. 怎么可能,看路径,路径对了?

      1. 真没有

        1. 好吧,看了下最新版的TYPECHO,还真的没有。。。我用的是1.0 (14.5.26)版本
          纠结,在找解决方案

        2. 好了,你来改吧

          1. 蛋疼的是,我用了多说评论框,头像居然被墙。

  3. c c

    又被墙了……这太恶心了……

  4. 被墙这个事情真的很恶心

  5. 学习了

  6. 吊炸天........

  7. 啊

    看看啊

  8. 您是用哪个方法解决的?

    1. 更简单的解决方法。。。

      1. 那为什么我的登陆界面没有typecho的logo,管理界面也不显示评论人员头像啊?

        1. 你的缺少/admin/img/typecho-logo.svg这个文件。
          恩,更简单的解决头像的那个办法不支持后台头像显示,如果修改源文件就支持了。
          另外,最新版(好像测试版)的Typecho可以在后台设置头像源了。

          1. 哦,明白了,谢谢提醒!

  9. 学到了,

  10. 突然感觉Typecho用户量好大。。。🥳

    1. 我是叛逃tp用户😓

添加新评论