Typecho实现评论者身份认证以及评论之星VIP等级

2017-01-28 05:28:00
 尚寂新
这是一个创建于 1602 天前,最后修改于 1265 天前的主题,其中的信息可能已经有所发展或是发生改变。
这篇文章是从别的博客转来的,由于不知道什么原因无法访问了,于是机芯特意找谷歌的快照把这篇文章给弄回来了QwQ,放在这里供大家参考吧QwQ

在WordPress博客上,几乎都加上了“博主认证”“评论之星”的功能,都是通过查询数据库的评论数并判断。
而在Typecho上,怎么实现这个功能呢?
首先,请确定你的主题已经自定义评论回调函数,或不使用listComments函数获得评论

实现评论者身份认证

这个几乎是必须的,因为冒充博主的人实在是太多了

  1. 把下面的代码添加到主题functions.php文件内

    /**
     * 评论者认证
     *
     * @author ShingChi
     * @access public
     * @param str $email 评论者邮址
     * @return viod 
     */
    function commentApprove($widget, $email = NULL)
    {
        if (empty($email)) return;
     
        //认证用户
        $handsome = array(
            'xxx@126.com', 
            'xxx@qq.com', 
            'xxx@gmail.com'
        );
     
        if ($widget->authorId == $widget->ownerId) {
            echo '<i class="vip-admin" title="很帅的博主"></i>';
        } else if (in_array($email, $handsome)) {
            echo '<i class="vip-author" title="认证贵宾"></i>';
        }
    }
  2. 在主题的comments.php或functions.php内
    找到评论回调函数中的:
    <?php $comments->author(); ?>函数,并在它后面加上:
    <?php commentApprove($comments, $comments->mail); ?>
  3. 自行添加CSS

实现评论之星

这个功能其实可有可无,最重要的目的是鼓励评论者多多评论。实现的方法也很简单,我是根据WordPress上的来移植的。

  1. 把下面的代码添加到主题functions.php文件内

    /**
     * 评论之星
     *
     * @author Rich
     * @access public
     * @param str $email 评论者邮址
     * @return viod 
     */
    function get_author_class($email,$widget){
        $db = Typecho_Db::get();
        $sql = $db->select('COUNT(mail) as emnum')->from('table.comments')
            ->where('status = ?','approved')
            ->where('mail = ?',$email);
        $result = $db->fetchAll($sql);
        $author_count = $result[0]['emnum'];
        /*如果不需要管理员显示VIP标签,就把下面一行的“//”去掉*/
        //if($widget->authorId == $widget->ownerId) return;
        if($author_count>=10 && $author_count<20)
            echo '<a class="vip1" title="评论达人 LV.1"></a>';
        else if($author_count>=20 && $author_count<40)
            echo '<a class="vip2" title="评论达人 LV.2"></a>';
        else if($author_count>=40 && $author_count<80)
            echo '<a class="vip3" title="评论达人 LV.3"></a>';
        else if($author_count>=80 && $author_count<160)
            echo '<a class="vip4" title="评论达人 LV.4"></a>';
        else if($author_count>=160 && $author_count<320)
            echo '<a class="vip5" title="评论达人 LV.5"></a>';
        else if($author_count>=320 && $author_count<640)
            echo '<a class="vip6" title="评论达人 LV.6"></a>';
        else if($author_count>=640)
            echo '<a class="vip7" title="评论达人 LV.7"></a>';
    }
  2. 在主题的comments.php或functions.php内
    找到评论回调函数中的:<?php $comments->author(); ?>函数,并在它后面加上:<?php get_author_class($comments->mail,$comments); ?>
  3. 同样添加CSS

总结

这里提供两段CSS,供大家参考

  1. 网上转载疯的,作者未知

    /*VIP评论之星*/
    .vp,.vip,.vip1,.vip2,.vip3,.vip4,.vip5,.vip6,.vip7{background: url(img/vip.png) no-repeat;display: inline-block;overflow: hidden;border: none;}
    .vp{background-position:-515px -2px;width: 16px;height: 16px;margin-bottom: -3px;}
    .vp:hover{background-position:-515px -22px;width: 16px;height: 16px;margin-bottom: -3px;}
    .vip{background-position:-494px -3px;width: 16px;height: 14px;margin-bottom: -2px;}
    .vip:hover{background-position:-494px -22px;width: 16px;height: 14px;margin-bottom: -2px;}
    .vip1{background-position:-1px -2px;width: 46px;height: 14px;margin-bottom: -1px;}
    .vip1:hover{background-position:-1px -22px;width: 46px;height: 14px;margin-bottom: -1px;}
    .vip2{background-position:-63px -2px;width: 46px;height: 14px;margin-bottom: -1px;}
    .vip2:hover{background-position:-63px -22px;width: 46px;height: 14px;margin-bottom: -1px;}
    .vip3{background-position:-144px -2px;width: 46px;height: 14px;margin-bottom: -1px;}
    .vip3:hover{background-position:-144px -22px;width: 46px;height: 14px;margin-bottom: -1px;}
    .vip4{background-position:-227px -2px;width: 46px;height: 14px;margin-bottom: -1px;}
    .vip4:hover{background-position:-227px -22px;width: 46px;height: 14px;margin-bottom: -1px;}
    .vip5{background-position:-331px -2px;width: 46px;height: 14px;margin-bottom: -1px;}
    .vip5:hover{background-position:-331px -22px;width: 46px;height: 14px;margin-bottom: -1px;}
    .vip6{background-position:-441px -2px;width: 46px;height: 14px;margin-bottom: -1px;}
    .vip6:hover{background-position:-441px -22px;width: 46px;height: 14px;margin-bottom: -1px;}
    .vip7{background-position:-611px -2px;width: 46px;height: 14px;margin-bottom: -1px;}
    .vip7:hover{background-position:-611px -22px;width: 46px;height: 14px;margin-bottom: -1px;}

    另外,别忘了下载这个vip.png图片到主题img文件夹,另存即可请另存为使用 请勿引用本站静态站链接

  1. 一个非常简约的css

    /*评论者VIP显示功能的样式*/
    .vp,.vip,.vip1,.vip2,.vip3,.vip4,.vip5,.vip6,.vip7{overflow:hidden;padding:0 4px;color:#fff !important;margin:0 6px 0 0;}
    .vp:hover,.vip:hover,.vip1:hover,.vip2:hover,.vip3:hover,.vip4:hover,.vip5:hover,.vip6:hover,.vip7:hover{background:#aaa;}
    .vp{background:#2ae;}
    .vip{background:#E63F00;}
    .vip1{background:#FF8888;}
    .vip2{background:#FFBB66;}
    .vip3{background:#BBFF66;}
    .vip4{background:#66FF66;}
    .vip5{background:#77FFCC;}
    .vip6{background:#D28EFF;}
    .vip7{background:#99BBFF;}
    效果演示:本博用的就是此方案 大家可以自行参考

原地址:https://taky.me/post/521/