大寒福利:评论等级系统思路及源码分享

前不久水了一篇文章,当当当,新鲜出炉的评论等级系统,最近也没什么大事。

本着友好、开源的精神(其实是网站最近人气有所下降),今天分享下,就本人而言,不是特别喜欢用插件,因网站是我们俩个人的,所以就任意折腾了,也没那个心思写成插件了。

功能思路分析

1.关键词:首先分析评论表单的三个参数,昵称、邮箱、地址。因为地址是非必填,所以首先排除地址。剩下的昵称和邮箱,就目前来说,我选择的是邮箱,因为邮箱一般人很少出现变动。

2.存储与分组:关键词有了,我们得找个地方存储,就目前博客所用程序来说,接口还是很方便的,直接存到数据库也是很方便的。分组,指的是不同人的邮箱,给的分组是不一样的。格式,存的时候一般我都是习惯以json 的格式存储。

3.提交数据与存储数据校对。

思路就是以上,总得来说小功能还是很简单的,肯定不需要多久的,总结就是将评论人的邮箱存到数据库,然后再取出来匹配,根据每个人的分组不同,给予不同的标识。

功能代码

1.存储数据
functions.php 页面 themeConfig函数里面加入

   // 站点会员
    $siteMembers = new Typecho_Widget_Helper_Form_Element_Textarea('siteMembers', null, _t('默认值'), _t('站点会员'), _t('在这里输入本站站点会员的邮箱'));
    $form->addInput($siteMembers);

存储格式:

{
    "ov":{"sixu":"fat00119@qq.com",
          "jrotty":"bssf@qq.com"
        },
    "mm":{"xxx":"xxx@aliyun.com"},
    "vip":{"xxx":"chofrey@163.com",
           "flyqie":"myqmdx@163.com"
    }
}

ov 里面的2个邮箱就是ov ,在本站对应的标识就是橙V。同理,xxx@aliyun.com 返回的就是MM 本站对应的是蝴蝶结。

禾令奇20180121201354.png

2.关键函数

比较,查找邮箱是否存在,放在functions.php 页面

/**
 * 查找邮箱是否存在
 * @param  string $val 特定邮箱
 * @param  array  $arr 数组
 * @return string 结果
 */
function soGroup($val, $arr)
{
    if (empty($arr)) {
        return false;
    } else {
        foreach ($arr as $k => $v) {
            if (!is_array($v)) {
                if ($v == $val) {
                    return $k;
                } else {
                    continue;
                }
            }
            if (in_array($val, $v, true)) {
                return $k;
            } else {
                soGroup($val, $v);
            }
        }
    }
}

禾令奇20180121201512.png

3.调用函数并比较
在comments.php 页面threadedComments 函数里面加入 以下代码

$groupStr = $options->siteMembers;
    $groupArr = json_decode($groupStr, true);
    
    $group = soGroup($comments->mail,$groupArr); //所在组
    if (!empty($group)) {
        $group = 'icon '.$group;
    }else{
        $group = '';
    }

见下图
禾令奇截图20180121201740.png

然后在评论里面引用,可能每个网站的评论代码都不一样,以本站为例。

红框那个i标签就是,上面函数返回的就是与之对应的评论等级的标识。

禾令奇截图20180121210358.png

<i class="<?php echo $group; ?>"></i>

最后附上我们网站的评论CSS代码

/* 网站会员 */
.icon{ width: 18px; height: 18px; background-size: 18px; background-repeat: no-repeat; margin: 3px 1px; display: inline-block; letter-spacing: normal; word-spacing: normal; vertical-align: middle; background-image: url(https://static.helingqi.com/images/icon.png); }
/*橙 V*/
.ov{ background-position: 0 0; }
/* 蓝 V*/
.bv{ background-position: 0 -25px; }
/* 金 V*/
.gv{ background-position: 0 -48px; }
/* 达人 */
.dr{ background-position: 0 -76px; }
/* mm */
.mm{ background-position: 0 -100px; }
/* VIP */
.vip{ background-position: 0 -126px; }

最后来一张效果图,haha:

禾令奇截图20180121202621.png

文章翻页

 
已有 10 条评论
  1. 肥柴之家
    呵呵.png 整天就知道搞些sao东西。。。。
    肥柴之家 回复
  2. 飞翔的企鹅
    滑稽.png 感谢分享,很有用
    飞翔的企鹅 回复
    1. 落叶大大
      @飞翔的企鹅 酸爽.png 酸爽.png 会用吗?
      落叶大大 回复
      1. 飞翔的企鹅
        @落叶大大 滑稽.png 会啊,,,但是我懒得加
        飞翔的企鹅 回复
  3. 思绪的空中生活
    IP+1 感谢大佬分享 真棒.png
    思绪的空中生活 回复
    1. 落叶大大
      @思绪的空中生活 滑稽.png 滑稽.png 很简单的
      落叶大大 回复
  4. 千灵子
    简单明了的傻瓜式教程,等以后买了服务器再试试啦 笑尿.png
    千灵子 回复
    1. 落叶大大
      @千灵子 虚拟机也可以 滑稽.png
      落叶大大 回复
  5. 情醉中国风
    前排吃辣条,感谢大佬( ˙˘˙ )分享 真棒.png
    情醉中国风 回复
    1. 落叶大大
      @情醉中国风 小乖.png 小乖.png
      落叶大大 回复