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

尚寂新
尚寂新
2017/01/28 05:28
这篇文章是从别的博客转来的,由于不知道什么原因无法访问了,于是机芯特意找谷歌的快照把这篇文章给弄回来了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/

已有 5 条评论 (旧评论在前)
  1. 尚寂新 博主
    回复
    2017-01-28 05:47 Windows 7

    机芯的智商再次爆炸QwQ 发现压根按照原帖方式用在主题上之后评论功能全废QwQ 幸好在本地测试了一下QwQ 另本文仅供参考

    1. 尚寂新 博主
      回复
      2017-02-24 09:59 Windows 7

      在机芯正在做的新主题中亲测全部有效 略改一些echo输出和等级评论Level0的判定那里(10改成0)就差不多可以实现,如果不想直接输出图标,可以吧i标签去掉 换成适合你评论系统的任意标签就可以

  2. 橙光
    回复
    橙光
    2018-09-07 00:54 Android 7.1.1

    获益匪浅

  3. 沙扬娜拉
    回复
    2018-12-27 22:52 Windows 7

    感觉不错 我来本地试试看~

  4. YAMADIE
    回复
    2019-01-24 21:40 Windows NT10

    不错的功能,有空试试,谢谢博主分享

添加新评论 (Markdown Supported)
(ノ°ο°)ノ