前两天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的源了,方法如下:
学到了,
您是用哪个方法解决的?
@浩瀚部落格 更简单的解决方法。。。
@Tokin 那为什么我的登陆界面没有typecho的logo,管理界面也不显示评论人员头像啊?
@浩瀚部落格 你的缺少/admin/img/typecho-logo.svg这个文件。
恩,更简单的解决头像的那个办法不支持后台头像显示,如果修改源文件就支持了。
另外,最新版(好像测试版)的Typecho可以在后台设置头像源了。
@Tokin 哦,明白了,谢谢提醒!
看看啊
吊炸天……..
学习了
被墙这个事情真的很恶心
又被墙了……这太恶心了……
为毛我的文件里面没有$url = $host . ‘/avatar/’;
@神父 怎么可能,看路径,路径对了?
@Tokin 真没有
@神父 好吧,看了下最新版的TYPECHO,还真的没有。。。我用的是1.0 (14.5.26)版本
纠结,在找解决方案
@神父 好了,你来改吧
@Tokin 蛋疼的是,我用了多说评论框,头像居然被墙。
好屌好屌