Typecho实现评论者身份认证以及评论之星VIP等级
这篇文章是从别的博客转来的,由于不知道什么原因无法访问了,于是机芯特意找谷歌的快照把这篇文章给弄回来了QwQ,放在这里供大家参考吧QwQ
在WordPress博客上,几乎都加上了“博主认证”“评论之星”的功能,都是通过查询数据库的评论数并判断。
而在Typecho上,怎么实现这个功能呢?
首先,请确定你的主题已经自定义评论回调函数,或不使用listComments函数获得评论
实现评论者身份认证
这个几乎是必须的,因为冒充博主的人实在是太多了
把下面的代码添加到主题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>'; } }
- 在主题的comments.php或functions.php内
找到评论回调函数中的:<?php $comments->author(); ?>
函数,并在它后面加上:<?php commentApprove($comments, $comments->mail); ?>
- 自行添加CSS
实现评论之星
这个功能其实可有可无,最重要的目的是鼓励评论者多多评论。实现的方法也很简单,我是根据WordPress上的来移植的。
把下面的代码添加到主题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>'; }
- 在主题的comments.php或functions.php内
找到评论回调函数中的:<?php $comments->author(); ?>
函数,并在它后面加上:<?php get_author_class($comments->mail,$comments); ?>
- 同样添加CSS
总结
这里提供两段CSS,供大家参考
网上转载疯的,作者未知
/*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文件夹,另存即可请另存为使用 请勿引用本站静态站链接
一个非常简约的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;}
效果演示:本博用的就是此方案 大家可以自行参考
机芯的智商再次爆炸QwQ 发现压根按照原帖方式用在主题上之后评论功能全废QwQ 幸好在本地测试了一下QwQ 另本文仅供参考
在机芯正在做的新主题中亲测全部有效 略改一些echo输出和等级评论Level0的判定那里(10改成0)就差不多可以实现,如果不想直接输出图标,可以吧i标签去掉 换成适合你评论系统的任意标签就可以
获益匪浅
感觉不错 我来本地试试看~
不错的功能,有空试试,谢谢博主分享