Typecho实现评论者身份认证以及评论之星VIP等级
这是一个创建于 1501 天前,最后修改于 1163 天前的主题,其中的信息可能已经有所发展或是发生改变。
这篇文章是从别的博客转来的,由于不知道什么原因无法访问了,于是机芯特意找谷歌的快照把这篇文章给弄回来了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;}
效果演示:本博用的就是此方案 大家可以自行参考
作者:尚寂新链接:https://shangjixin.com/archives/34.html
版权:除特殊声明,所有文章均采用 BY-NC-SA 4.0 协议,转载请注明作者
最后修改于 2017 年 12 月 31 日
机芯的智商再次爆炸QwQ 发现压根按照原帖方式用在主题上之后评论功能全废QwQ 幸好在本地测试了一下QwQ 另本文仅供参考
在机芯正在做的新主题中亲测全部有效 略改一些echo输出和等级评论Level0的判定那里(10改成0)就差不多可以实现,如果不想直接输出图标,可以吧i标签去掉 换成适合你评论系统的任意标签就可以
获益匪浅
感觉不错 我来本地试试看~
不错的功能,有空试试,谢谢博主分享