正文

这个功能和文章点赞是一样的原理,只不过换个数据表而已。

只不过把点赞数量写进用户的user数据表而已。

因板子需求,所以就改了一下这个功能,顺带记录一下。

module文件

//用户点赞function dianzhan(){
 $DB = Database::getInstance();
 if($DB->num_rows($DB->query("show columns from ".DB_PREFIX."user like 'dianzan'")) == 0){
 $sql = "ALTER TABLE ".DB_PREFIX."user ADD dianzan int unsigned NOT NULL DEFAULT '0'";
 $DB->query($sql);
 }}dianzhan();function dzdate($uid){
 $uid = intval($_POST['id']);
 $DB = Database::getInstance();
 $DB->query("UPDATE " . DB_PREFIX . "user SET dianzan=dianzan+1 WHERE uid=$uid");
 setcookie('dianzanpd_'. $uid, 'true', time() + 31536000);}function umzan(){
 if( @$_POST['plugin'] == 'dianzanpd' &&@$_POST['action'] == 'dianzan' &&isset($_POST['id'])){
 $id = intval($_POST['id']);
 header("Access-Control-Allow-Origin: *");
 dzdate($id);echo getum($id);die;
 }}umzan();function getum($id){
 static $arr = array();
 $DB = Database::getInstance();
 if(isset($arr[$uid])) return $arr[$uid];
 $sql = "SELECT dianzan FROM " . DB_PREFIX . "user WHERE uid=$id";
 $res = $DB->query($sql);
 $row = $DB->fetch_array($res);
 $arr[$id] = intval($row['dianzan']);
 return $arr[$id];}

调用方式

<a href="javascript:;" id="dianzan" data-dianzanpd="<?php echo $userData['uid'];?>" title="点赞"><span class="fa fa-thumbs-o-up"></span><i><?php echo(isset($userData['dianzan'])?$userData['dianzan']:getum($userData['uid']));?></i></a>

JS代码

//用户点赞$(document).on('click','#dianzan',function(){var a=$(this),id=a.data('dianzanpd');if(dianzanpd_check(id)){alert('已点赞!');}else{$(this).addClass('current');$.post('',{plugin:'dianzanpd',action:'dianzan',id:id},function(b){a.find('i').html(b)})}});function dianzanpd_check(id){return new RegExp('dianzanpd_'+id+'=true').test(document.cookie)}$('[data-dianzanpd]').each(function(){var a=$(this),id=a.data('dianzanpd');if(dianzanpd_check(id)){dianzanpd_(a)}else{a.attr('title','点赞')}});function dianzanpd_(a){a.css('current')}function btn_click(btn,on,off){flag=true;$(btn).click(function(){$(btn).prop('class',(flag=!flag)?on:off)})}!function(){$('[data-dianzanpd]').each(function(){var a=$(this),id=a.data('dianzanpd');if(dianzanpd_check(id)){$(this).addClass('current')}})}();function menu_click(a,b,d){flag=!0;if(a=document.getElementById(a))a.onclick=function(){a.setAttribute("class",(flag=!flag)?b:d)}}

PS:

这里说明一下,FLY主题用户,Meta主题用户可以按照流程放入代码可直接使用。

其他主题的话,可能要略做修改。

文章版权声明:除非注明,否则均为枫叶博客原创文章,转载或复制请以超链接形式并注明出处。
-- 展开阅读全文 --