最近脑海里突然有了个小想法,想为我的网站评论区用户增加一个用户等级标识。
有了想法就先从逻辑上想想应该如何实现,首先是博主,也就是我自己,应该有单独的标识,对于网站用户,根据其在数据库中的所有评论数来进行判断。
先写一个可以输入用户邮箱,然后在数据库中根据输入邮箱查询该邮箱评论数的函数:
/**输出作者评论总数,可以指定*/
function get_user_level($mail) {
$db = Typecho_Db::get();
$count = $db->fetchRow($db->select('COUNT(*)')->from('table.comments')->where('status = ?', 'approved')->where('mail = ?', $mail));
// 返回评论数量
$commentnum = $count['COUNT(*)'];
if ($commentnum<=1) {
return '';
} elseif ($commentnum<=3) {
return '回头客';
} elseif ($commentnum<=10) {
return '老顾客';
} else {
return '忠实用户';
}
}
在主题functions.php
文件中添加该函数。
然后就是在主题comments.php
适当位置进行逻辑判断:
<!-- 增加博主标识 -->
<?php
echo '<span class="user-logo';
if ($this->authorId) { // 如果是博主,输出单独标识
if ($this->authorId == $this->ownerId) {
echo ' webmaster">站长';
}
} else { // 如果不是博主,根据邮箱查询评论数
if (get_user_level($this->mail)) { // 如果评论数大于1
echo '">' . get_user_level($this->mail);
} else { // 如果 评论数为1,则不显示
echo '" style="display:none;">';
}
}
echo '</span>';
?>
然后就是进行前端的美化:
/* 博主标识样式 */
.webmaster {
background: linear-gradient(90deg, #ffeccc, #ffd080);
color: #64360d !important;
}
/* 普通用户标识 */
.user-logo {
font-size: 80%;
display: inline-block;
background-color: #20b8d4;
padding: 1px 4px;
color: white;
border-radius: 3px;
}
完美!效果见本站!
额。。这个效果最早是各大论坛的等级制度。
老哥的博客很符合我的审美,你现在的程序是Typecho吗,下面的IP地理位置怎么实现的?
看看是啥效果。不过之前好像看到别人有这么弄过。
反正是我理想中的需求了。