in 折腾博客 (1898℃)

这篇文章是从别的博客转来的,由于不知道什么原因无法访问了,于是机芯特意找谷歌的快照把这篇文章给弄回来了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>';
    }
}
  1. 在主题的comments.php或functions.php内
    找到评论回调函数中的:

<?php $comments->author(); ?>函数,并在它后面加上:
<?php commentApprove($comments, $comments->mail); ?>

  1. 自行添加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>';
}
  1. 在主题的comments.php或functions.php内
    找到评论回调函数中的:<?php $comments->author(); ?>函数,并在它后面加上:<?php get_author_class($comments->mail,$comments); ?>
  2. 同样添加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文件夹,另存即可<span style="color:red;">请另存为使用 请勿引用本站静态站链接</span>

  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/

 |   | 

相关标签:#typecho #评论

许可协议: 署名-相同方式共享 4.0 国际 转载请保留原文链接及作者