Typecho将评论头像修改为QQ头像

默认的Gravatar是在是太难看了,而且还会经常宕机,所以网上最常用的方法是用QQ头像替换默认的gravatar头像。于是我在网上苦苦搜索了好几天,终于找到了适合的方法,现在记录一下代码。

<?php $number=$comments->mail; echo '<img src="https://q2.qlogo.cn/headimg_dl? bs='.$number.'&dst_uin='.$number.'&dst_uin='.$number.'&;dst_uin='.$number.'&spec=100&url_enc=0&referer=bu_interface&term_type=PC" width="46px" height="46px" style="border-radius: 50%;">'; ?>

用以上代码替换comment.php里面默认的gravatar代码即可。

下面还有一个更完善的办法,因为当访客使用QQ邮箱评论时会显示QQ头像,可是如果使用的不是QQ头像,就会显示一个QQ企鹅头像

首先,将下面的代码丢到funtions.php文件当中。

//获取Gravatar头像 QQ邮箱取用qq头像
function getGravatar($email, $s = 96, $d = 'mp', $r = 'g', $img = false, $atts = array())
{
preg_match_all('/((\d)*)@qq.com/', $email, $vai);
if (empty($vai['1']['0'])) {
    $url = 'https://www.gravatar.com/avatar/';
    $url .= md5(strtolower(trim($email)));
    $url .= "?s=$s&d=$d&r=$r";
    if ($img) {
        $url = '<img src="' . $url . '"';
        foreach ($atts as $key => $val)
            $url .= ' ' . $key . '="' . $val . '"';
        $url .= ' />';
    }
}else{
    $url = 'https://q2.qlogo.cn/headimg_dl?dst_uin='.$vai['1']['0'].'&spec=100';
}
return  $url;
}

其次,再将下面的代码复制到需要放头像的页面,通常是comments.php页面和sidebar.php页面。

把里面的

<?php $comments->gravatar('100', ''); ?>

改为:

<?php $email=$comments->mail; $imgUrl = getGravatar($email);echo '<img src="'.$imgUrl.'" width="45px" height="45px" style="border-radius: 50%;" >'; ?>

该代码可以实现的功能:当客户评论时用的不是QQ邮箱,则显示gavatar头像,否则则显示QQ头像。完美!

扩展用途:

站长在其他位置显示头像的地方

<?php echo $this->author->gravatar(500); ?>

改为:

<?php $email=$this->author->mail; $imgUrl = getGravatar($email);echo '<img src="'.$imgUrl.'" width="45px" height="45px" style="border-radius: 50%;" >'; ?>

强烈推荐:

实现typecho评论框输入QQ号码自动获取QQ头像和昵称

玩不溜,花了不少时间才实行了这个功能,网上找打的都是wordpress比较多,结构不是很熟悉,又用不了,看看评论效果把 输入QQ就自动获取昵称,邮箱和头像,可能还有....

文章由官网发布,如若转载,请注明出处:https://www.veimoz.com/31
3 条评论
7.2k

发表评论

已有 3 条评论

  1.     Win 7 /    Chrome
    2019-10-25 12:28

    可以加一下QQ聊一下吗?有截图的话方便叙述,谢谢!

  2.     Win 7 /    Chrome
    2019-10-25 10:51

    我用了这个修改,但是出现了一点问题,想问一下要怎么解决:
    QQ邮箱的头像能显示,但是输入评论的是gavatar头像
    就是QQ头像在上没东西
    gavatar头像在下却输出了要评论的内容

    1. 拾忆     Win 10 /    Chrome
      2020-05-16 12:58

      @蓝

      测试测试测试

!