Typecho网站用户等级标识

2023-05-17 21:47:23 浏览数 (4)

又一个无聊的小功能~

请注意,本文编写于 184 天前,最后修改于 184 天前,其中某些信息可能已经过时。

最近脑海里突然有了个小想法,想为我的网站评论区用户增加一个用户等级标识。

基本构想

有了想法就先从逻辑上想想应该如何实现,首先是博主,也就是我自己,应该有单独的标识,对于网站用户,根据其在数据库中的所有评论数来进行判断。

先写一个可以输入用户邮箱,然后在数据库中根据输入邮箱查询该邮箱评论数的函数:

代码语言:javascript复制
/**输出作者评论总数,可以指定*/
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适当位置进行逻辑判断:

代码语言:javascript复制
<!-- 增加博主标识 -->
<?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>';
?>

然后就是进行前端的美化:

代码语言:javascript复制
/* 博主标识样式 */
.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;
}

完美!效果见本站!

1 人点赞