[typecho小程序]利用Typecho解决Gravatar被墙的问题

更新时间:2019-09-18    来源:WordPress    手机版     字体:

【www.bbyears.com--WordPress】

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

function get_ssl_avatar($avatar) {
   $avatar = preg_replace("/.*\/avatar\/(.*)\?s=([\d]+)&.*/","",$avatar);
   return $avatar;
}
add_filter("get_avatar", "get_ssl_avatar");

但是Typecho并没有相关的文档,本想把大发的代码修改到TE,但是我不会PHP,看了好半天,翻了下程序源文件,怎么改都不行,于是我只好苦逼的修改源文件去了,希望好基友们看到后帮我鼓捣下。
好了,修改源文件其实也超级简单,只需要一行就可以了,方法如下:
打开 \var\Widget\Abstract\Comments.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
七牛镜像SSH源:https://dn-avacdn.qbox.me

当然自己搭建七牛镜像,或者反向代理Gravatar也是比较简单的,就不再赘述。
另外,如果你正在使用“评论墙”功能,那么可以在插件或者主题的function.php中找到如下代

$mostactive .= "";
将其修改为如下:

//$mostactive .= "";
$mostactive .= "";


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

设置头像源

 

方法二

将下方代码粘贴进入主题文件夹下的function.php内:

//自定义评论列表区域
function threadedComments($comments, $options) {
    $commentClass = "";
    if ($comments->authorId) {
        if ($comments->authorId == $comments->ownerId) {
            $commentClass .= " comment-by-author";
        } else {
            $commentClass .= " comment-by-user";
        }
    }
 
    $commentLevelClass = $comments->levels > 0 ? " comment-child" : " comment-parent";
?>
 

  •     $comments->levelsAlt(" comment-level-odd", " comment-level-even");
    } else {
        echo " comment-parent";
    }
    $comments->alt(" comment-odd", " comment-even");
    echo $commentClass;
    ?>">
        theId(); ?>">
           
                            //头像CDN by Rich
                $host = "https://secure.gravatar.com"; //自定义头像CDN服务器
                $url = "/avatar/"; //自定义头像目录,一般保持默认即可
                $size = "32"; //自定义头像大小
                $rating = Helper::options()->commentsAvatarRating;
                $hash = md5(strtolower($comments->mail));
                $avatar = $host . $url . $hash . "?s=" . $size . "&r=" . $rating . "&d=";
                ?>
                <?php echo $comments->author; ?>
                author(); ?>
           
           
                permalink(); ?>">date("Y-m-d H:i"); ?>
                reply(); ?>
           
            content(); ?>
       
    children) { ?>
       
            threadedComments($options); ?>
       


    OK,评论区域的头像问题就可以更简单的解决了,更新程序也不用重新修改源文件

    本文来源:http://www.bbyears.com/wangyezhizuo/68541.html