导航

萌即是正义!时不时分享一些ACG活动记录与有趣代码的小站!

侧边栏
热门文章
1页面
程序员老黄历&求签
热度
767
2博文
当炒饭与海风相遇《Summer Pockets REFLECTION BLUE》 圣地巡礼之男木岛
热度
364
3博文
百合盛典 Prism Garden ― 光庭花开,一瓣情思
热度
143
4推文
你是ChatGPT,别假装自己是Gemini啊!
热度
117
5推文
整理了一遍《Happy Sugar Life》的收藏品。
热度
104
6博文
《摇曳露营△》十周年纪念展
热度
104
7推文
bilibili的推广必火怎么样? 出于好奇于是用B站的收益尝试了一下B站的推广必火功能。 一共推广了5个全景视频,一共收获了1830的播放量,49的点赞,48收藏。购买时只保证最低830的播放量。目标区间为 830 - 3330 。 100元人民币这样的收益只能说是纯血亏了😅。而且从数据上来看,其实互动率并不高,甚至没有增加粉丝。 推广期间还收到了无数的广告私信,看起来应该是有人专门针对推广视频反向推广自己的推广服务。非常浪费推广流量。 一共推广的5个视频,也不知道为什么特别侧重《爱上火车》的全景。反倒是《京吹》在没有获得资源的情况下自然获得了 1500+ 的播放,150+ 的点赞,很迷。 总之这个服务玩玩就好,别指望靠这个服务成为大主播。
热度
65
8推文
支持全景照片功能的0.29.0版本的维基萌博客系统发布啦! 这个版本最大的亮点就是可以在管理后台标记照片为全景照片,并在博客端以全景模式查看照片。 详见:https://github.com/eeg1412/wikimoeNodeJSBlog/releases/tag/v0.29.0
热度
65
9推文
各种语言下的维基萌,既熟悉又陌生。
热度
52
10博文
3DS模拟器简体中文字库 | Citra3ds字库 | 符文工房4乱码解决字库 | shared_font.bin
热度
52
最新评论
广树管理员
2026-05-22 22:41
@MqyGalaxy:nanobanana训练,AI训练AI
广树管理员
2026-05-22 22:40
@ZeroCounter:我仿佛看到了小孤独
MqyGalaxy
2026-05-22 22:07
怎么感觉像是在模仿nanobanana生出来的图😂
ZeroCounter
2026-05-22 14:58
好热情……社恐看到这种美好的画面要融化在屏幕前了!😇
许大阳
2026-05-22 14:44
风景不错OωO
攻略中
告别回忆 双想 ~Not always true~
暂无评分
Steam告别回忆 双想 ~Not always true~
2026年3月10日 22时 ~ 攻略中
已累计游玩2个月13天
“我觅见了生命中的唯一,而后——”
亚路塔:狐狸狐途的面包冒险
暂无评分
Steam亚路塔:狐狸狐途的面包冒险
2026年2月12日 19时 ~ 攻略中
已累计游玩3个月9天
一场席卷全世界的面包革命现在开始! 主人公查雅阴错阳差之下,开始了在荒废的岛屿上经营面包店的生活。 出外冒险搜集食材、研发崭新面包配方、遇见性格各异的伙伴们,建造更丰富的设施,用面包香气使无人问津的广场再次热闹起来!
ToHeart
暂无评分
SteamToHeart
2025年6月26日 19时 ~ 攻略中
已累计游玩11个月
AQUAPLUS推出的“温暖人心的校园恋爱游戏”将以高清全3D形式焕新归来!
fault - StP - LIGHTKRAVTE
暂无评分
Steamfault - StP - LIGHTKRAVTE
2025年5月29日 20时 ~ 攻略中
已累计游玩11个月28天
全球累计销量超过50万份的“fault”系列最新作!故事的舞台是一个融合了奇幻与科幻的超前世界——卢森海德王国。本作讲述了生活在此地的一个平凡又平庸的究极普通市民——名为果子的少年的故事。
PSN奖杯卡

PSN奖杯卡

归档
赞助商广告

给emlog加上显示评论者等级功能

作者:广树时间:2018-04-13 09:25:51分类:PHP

前段时间看到别人的博客有评论者等级的机制于是自己也就想弄一个。在网上查了许多资料后自己也写了一个评论等级功能。

因为没有用户注册机制,所以我们就只能依据评论者留下的邮箱来判断这名用户在网站评论过多少次。


下面是代码部分:

PHP

推荐写在emlog模版文件的module.php下面

<?php
//comment:输出等级
function echo_levels($comment_author_email){
  if($comment_author_email == '""'){
	echo 'null';
  }else{
	  $DB = MySql::getInstance();
	  $sql = "SELECT cid as author_count FROM 评论数据的表单 WHERE mail = ".$comment_author_email."and hide ='n'";
	  $res = $DB->query($sql);
	  $author_count = mysql_num_rows($res);
	  if($author_count>9999){
		  $author_count = 9999;
	  }
	  echo $author_count;
  }
}
?>


注意下 【$sql = "SELECT cid as author_count FROM 评论数据的表单 WHERE mail = ".$comment_author_email."and hide ='n'";】

其中【评论数据的表单】换成自己的,一般来说是emlog_comment


然后使用下面的代码来导出这个用户发过多少次评论。

<?php $mail_str="\"".strip_tags($comment['mail'])."\"";echo_levels($mail_str); ?>

我这里是定义了input的值然后用js去循环出等级。


JSON

这里来定义发多少次评论所对应的等级。

下面是我写的等级表。

{
	"lv_exp": [{
			"name": "Lv.萌新",
			"exp": 3,
			"color": "Magenta"
		},
		{
			"name": "Lv.初学者",
			"exp": 10,
			"color": "BlueViolet"
		},
		{
			"name": "Lv.进阶者",
			"exp": 26,
			"color": "Blue"
		},
		{
			"name": "Lv.高阶者",
			"exp": 40,
			"color": "LightSeaGreen"
		},
		{
			"name": "Lv.半大佬",
			"exp": 70,
			"color": "YellowGreen"
		},
		{
			"name": "Lv.大佬",
			"exp": 110,
			"color": "GoldenRod"
		},
		{
			"name": "Lv.顶级大佬",
			"exp": 160,
			"color": "DarkRed"
		},
		{
			"name": "Lv.世界大佬",
			"exp": 220,
			"color": "Crimson"
		},
		{
			"name": "Lv.传说",
			"exp": 380,
			"color": "Red"
		},
		{
			"name": "Lv.永恒传说",
			"exp": 9999,
			"color": "ForestGreen"
		}
	],
	"lv_null": [{
		"name": "Lv.神秘人",
		"color": "gray"
	}]
}

lv_exp是评论者有留下邮箱时的等级配置。

以如下配置为例


"name": "Lv.萌新",
"exp": 3,
"color": "Magenta"


name为等级名称。

exp如果为3则表示评论数小于等于3为萌新。

color定义了这个等级的色值。


lv_null是评论者没有留下邮箱时定义的名字和颜色。


JS

$(document).ready(function(e) {
    $.ajax({
		url:"<?php echo TEMPLATE_URL; ?>/lvList/lv.json",
		success:function(result){
        	var lvList = result.lv_exp;
			var lv_exp = $('.lv_exp');
			for(var i=0;i<lv_exp.length;i++){
				var num = lv_exp.eq(i).val();
				if(num != 'null'){
					var lvName = '';
					var lvColor='';
					var listCount = 0;
					for(var j=0;j<lvList.length;j++){
						if(parseFloat(num) <= lvList[j-listCount].exp){
							console.log(num);
							lvName = lvList[j-listCount].name;
							lvColor = lvList[j-listCount].color;
							break;
						}
					}
					$('.alv_body').eq(i).append('<div><span class="wikimoe_level_label" style="color:'+lvColor+';border-color:'+lvColor+'">'+lvName+'</span></div>');
				}else{
					var nullName = result.lv_null[0].name;
					var nullColor = result.lv_null[0].color;
					$('.alv_body').eq(i).append('<div><span class="wikimoe_level_label" style="color:'+nullColor+';border-color:'+nullColor+'">'+nullName+'</span></div>');
				}
			}
			
			$('.alv_body').fadeIn();
			
    	}
	});
});


就是循环一遍json数据然后添加到对应的元素内,这里的$('.alv_body')等元素要改成自己的元素。


CSS

/*等级*/
.alv_body{
	font-weight:bold;
	display:none;
	margin-top:5px;
	opacity: 0.6;
}
.wikimoe_level_label{
	border-style: solid;
    border-width: 1px;
    border-radius: 5px;
    padding: 0px 5px;
    display: inline-block;
	line-height: 20px;
    font-size: 12px;
}

样式其实可以无所谓,根据自己的情况进行更改。


最终效果:

donate.png


telegram banner (1).png