规则之树

typecho不修改内核,更换Gravatar头像源

今天早上,本来心情美滋滋的看博客的访问情况和回复后台的评论,然后返回页面上一看,所有的头像都不显示了,Gravatar的官方无法访问,不知道是网络丢包还是墙了,总之很不爽。百度了一下,发现很多博客都遇到了相似的问题,因为Gravatar其实是经常被墙的,每次出现这个问题,整个网站的所有头像图片都会无法加载,形成一堆报错和死链。而且特别是我博客这个模板又是在各个地方调用头像的,所以我觉得有必要解决一下这个问题。
网上的教程都是告诉你修改typecho的内部控制文件,我觉得这样很不妥,基本上升级了就回到解放前,而且没准官方未来会有新的定义,所以我决定在模板层面实现,这样无论typecho怎样升级,都不会改变我的头像调用。实际上,这个很简单,我只在模板控制器定义了一个方法,就成功了开始了每个页面愉快的调用。

教程开始

1.国内其实是有Gravatar源的

http://cdn.v2ex.com/gravatar/

如果细心点,就会发现,头像的路径其实就是一个地址,带上被md5加密的邮箱,和一个s参数控制宽度高度。

2.修改模板function.php文件,添加md5的加密方法。

function tmd5($text){
    if($text){ 
        
        $tmd5 = md5($text);
        echo $tmd5;
    }else{
        echo 'none';
    }
}

这段代码就是可以将邮箱地址转换为md5,配合头像的请求url,就可以愉快的调用用户头像了,并且直接替换掉官方的头像调用标签即可。

3.关于我博客不同区域的头像调用方式(以实际状况为准)

调用当前登录用户头像,后面的s参数代表宽高为30。

<img src="//cdn.v2ex.com/gravatar/<?php tmd5($this->user->mail); ?>?s=30" />

调用文章列表和文章详情的作者头像,后面的s参数代表宽高为25。

<img src="//cdn.v2ex.com/gravatar/<?php tmd5($this->author->mail); ?>?s=25" />

调用评论列表留言者头像,后面的s参数代表宽高为40。

<img src="//cdn.v2ex.com/gravatar/<?php tmd5($comments->mail); ?>?s=40" />

说白了,就是将调用出来的邮箱用md5加密,然后与国内的Gravatar源url组合,就成了头像的地址。感觉还是挺简单的,我还计划直接在模板里写一个可以切换头像源的功能,直接控制调用国外还是国内。

【规则之树版权所有,转载注明来源】

当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »