Typecho添加博主认证及评论等级(DIY版)
本文介绍了在Typecho博客中添加博主认证及评论等级的方法。作者通过参考其他博客的代码,解决了博主认证等级显示错误的问题,并提供了DIY代码和升级版应用,使评论者可以根据评论数量获得不同等级的认证。
本文最后由 荒野孤灯 更新于 2023 年 11 月 18 日 11 时 54 分,已有 543 天未更新。今日被查阅 1 次,若内容或图片资源失效,请留言反馈,谢谢!
摘要由 AI 智能生成
看到 Jdeal
大佬博客里有评论等级功能,觉得挺有意思,于是折腾起来。有问题问度娘:Typecho + 评论等级。
参考
参考大佬 小灯泡设计
的文章:typecho网站添加博主认证及等级--https://www.dpaoz.com/80
。
为啥到我这出错
这个功能其实挺简单,通过判断评论者的邮箱及评论条数,输出对应的文字或图片。完全按大佬的代码,但为啥到我这 ,原代码如下:博主
却显示为 VIP1
了
/** 评论者认证等级 */
function dengji($i){
$db=Typecho_Db::get();
$mail=$db->fetchAll($db->select(array('COUNT(cid)'=>'rbq'))->from('table.comments')->where('mail = ?', $i)->where('authorId = ?','0'));
foreach ($mail as $sl){
$rbq=$sl['rbq'];}
if($rbq<1){
echo '博主';
}elseif ($rbq<10 && $rbq>0) {
echo 'VIP1';
}elseif ($rbq<20 && $rbq>=10) {
echo 'VIP2';
}elseif ($rbq<40 && $rbq>=20) {
echo 'VIP3';
}elseif ($rbq<80 && $rbq>=40) {
echo 'VIP4';
}elseif ($rbq<100 && $rbq>=80) {
echo 'VIP5';
}elseif ($rbq>=100) {
echo 'SVIP';
}
}
DIY 代码
/**输出评论者等级*/
function dengji($i){
$db=Typecho_Db::get();
$mail=$db->fetchAll($db->select(array('COUNT(cid)'=>'rbq'))->from('table.comments')->where('mail = ?', $i)->where('authorId = ?','0'));
foreach ($mail as $sl){
$rbq=$sl['rbq'];}
if($rbq<1){
echo '<span class="commentapprove" style="color: #FFF;padding: .05rem .25rem;font-size: 8px;border-radius: 3px;background-color:#2bbc8a;margin-left:-10px;" >博主</span>';
}elseif ($rbq<3 && $rbq>=1) {
echo '<span class="commentapprove" style="color: #FFF;padding: .05rem .25rem;font-size: 8px;border-radius: 3px;background-color:#ccc;margin-left:-10px;" >陌生人</span>';
}elseif ($rbq<9 && $rbq>=3) {
echo '<span class="commentapprove" style="color: #FFF;padding: .05rem .25rem;font-size: 8px;border-radius: 3px;background-color:#666;margin-left:-10px;" >点头之交</span>';
}elseif ($rbq<27 && $rbq>=9) {
echo '<span class="commentapprove" style="color: #FFF;padding: .05rem .25rem;font-size: 8px;border-radius: 3px;background-color:#666;margin-left:-10px;" >酒肉朋友</span>';
}elseif ($rbq<81 && $rbq>=27) {
echo '<span class="commentapprove" style="color: #FFF;padding: .05rem .25rem;font-size: 8px;border-radius: 3px;background-color:#999;margin-left:-10px;" >互相认同</span>';
}elseif ($rbq<100 && $rbq>=81) {
echo '<span class="commentapprove" style="color: #FFF;padding: .05rem .25rem;font-size: 8px;border-radius: 3px;background-color:#999;margin-left:-10px;" >交情莫逆</span>';
}elseif ($rbq>=100) {
echo '<span class="commentapprove" style="color: #FFF;padding: .05rem .25rem;font-size: 8px;border-radius: 3px;background-color:#336699;margin-left:-10px;" >生死之交</span>';
}
}
原因已查明,我之前这个邮箱有用过——不是博主身份。踩了个坑……解决方法是将现在 博主 用的邮箱对应的authorId
全设置为1
。SQL语句如下:
update typecho_comments set authorid='1' where mail='博主邮箱账号'
前端调用
评论模板comments.php文件,在评论者名字输出位置后加上如下代码:
<?php dengji($comments->mail);?>
好了,搞定了。技术小白
经常闹笑话,各位大佬见笑了……
至于样式,可自行在上面的输出代码上加一个层,用 style
调整其CSS即可。
具体效果可参考本站评论。
最新创意应用参照博友文字:「目的地-Destination」https://blog.chrison.cn/work/170.html
—— 可实现博主、好友认证,友链认证(配合友链插件,需要links数据表),评论等级显示。代码如下:
升级版应用
functions.php
/**
* 评论者认证等级 + 身份
*
* @author Chrison
* @access public
* @param str $email 评论者邮址
* @return result
*/
function commentApprove($widget, $email = NULL)
{
$result = array(
"state" => -1,//状态
"isAuthor" => 0,//是否是博主
"userLevel" => '',//用户身份或等级名称
"userDesc" => '',//用户title描述
"bgColor" => '',//用户身份或等级背景色
"commentNum" => 0//评论数量
);
if (empty($email)) return $result;
$result['state'] = 1;
$master = array(
'基友邮箱1@qq.com',
'基友邮箱1@qq.com'
);
if ($widget->authorId == $widget->ownerId) {
$result['isAuthor'] = 1;
$result['userLevel'] = '博主';
$result['userDesc'] = '很帅的博主';
$result['bgColor'] = '#FFD67A';
$result['commentNum'] = 999;
} else if (in_array($email, $master)) {
$result['userLevel'] = '基友';
$result['userDesc'] = '很帅的基友';
$result['bgColor'] = '#65C186';
$result['commentNum'] = 888;
} else {
//数据库获取
$db = Typecho_Db::get();
//获取评论条数
$commentNumSql = $db->fetchAll($db->select(array('COUNT(cid)'=>'commentNum'))
->from('table.comments')
->where('mail = ?', $email));
$commentNum = $commentNumSql[0]['commentNum'];
//获取友情链接
$linkSql = $db->fetchAll($db->select()->from('table.links')
->where('user = ?',$email));
//等级判定
if($commentNum==1){
$result['userLevel'] = '初识';
$result['bgColor'] = '#999999';
$userDesc = '你已经向目的地迈出了第一步!';
} else {
if ($commentNum<3 && $commentNum>1) {
$result['userLevel'] = '初识';
$result['bgColor'] = '#999999';
}elseif ($commentNum<9 && $commentNum>=3) {
$result['userLevel'] = '朋友';
$result['bgColor'] = '#A0DAD0';
}elseif ($commentNum<27 && $commentNum>=9) {
$result['userLevel'] = '好友';
$result['bgColor'] = '#A0DAD0';
}elseif ($commentNum<81 && $commentNum>=27) {
$result['userLevel'] = '挚友';
$result['bgColor'] = '#A0DAD0';
}elseif ($commentNum<100 && $commentNum>=81) {
$result['userLevel'] = '兄弟';
$result['bgColor'] = '#A0DAD0';
}elseif ($commentNum>=100) {
$result['userLevel'] = '老铁';
$result['bgColor'] = '#A0DAD0';
}
$userDesc = '你已经向目的地前进了'.$commentNum.'步!';
}
if($linkSql){
$result['userLevel'] = '博友';
$result['bgColor'] = '#21b9bb';
$userDesc = '🔗'.$linkSql[0]['description'].' ✌️'.$userDesc;
}
$result['userDesc'] = $userDesc;
$result['commentNum'] = $commentNum;
}
return $result;
}
前台调用方法
//评论中调用上面的方法
<?php $commentApprove = commentApprove($comments, $comments->mail); ?>
//状态
<?php echo $commentApprove['state']; ?>
//是否是博主
<?php echo $commentApprove['isAuthor']; ?>
//用户身份或等级名称
<?php echo $commentApprove['userLevel']; ?>
//用户title描述
<?php echo $commentApprove['userDesc']; ?>
//用户身份或等级背景色
<?php echo $commentApprove['bgColor']; ?>
//评论数量
<?php echo $commentApprove['commentNum']; ?>
前端样式
根据自己的主题DIY!或者去大佬的网站扒,哈哈(目的地-Destination——https://blog.chrison.cn/
)
文章标题: Typecho添加博主认证及评论等级(DIY版)
分类标签:折腾,工具代码,typecho主题
文章链接:https://www.80srz.com/posts/1019.html
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
分类标签:折腾,工具代码,typecho主题
文章链接:https://www.80srz.com/posts/1019.html
许可协议: 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
来学习了,效果很好看
我想给评论增加字段 无从下手啊
可以考虑改数据表吧
感觉很牛逼,没有插件一步到位吗?
哈哈哈,代码忒多,有点懵逼。
哈哈,大佬的确实牛,可是要根据主题修改
我用的就只要
Ctrl + C
\Ctrl + V
,不过就是有点简陋。你倒是写的快。我下午改了一半出门了。哈哈哈
不会这么巧吧,你也在整这个!?
你看我的说说,下午的时候,把好友身份加上了。剩下非好友的,则显示等级。
然后下午有事出去了。所以等级还没写完。只加了身份
期待你的完整版,你的想法很赞。
发你了。fuction.php方法,我都是一句句写的😂。本来是直接返回span样式。后来,改成变量返回了
哈哈哈,时刻关注啊。还差一点.鼠标经过的描述,我想给个样式
关键是你前面的想法啊,貌似你已经弄完了。来来来
其实后面都一样了。😂。非好友,非博客主的,那就只能按等级了。等我吃完饭写完它。