Yzncms系列教程(7):简单实现点赞功能

前言

这个一个点赞功能,并不需要登录和判断IP,仅适合简单场景。。。

添加模型字段

我们在需要点赞的文章所属模型,新增一个点赞字段
如:字段名称:like,字段标题:点赞,默认值设置0。

添加模板代码

然后在前端模板加入以下代码

<!--点赞按钮 START-->
<a href="javascript:;" class="diggs">
    <span class="diggFont">点赞</span>
    <span class="diggNum">{$like|default="0"}</span>
</a>
<!--点赞按钮 END-->
<script type="text/javascript">
$(function(){ 
    $(".diggs").on("click",'',function(){
        var that = this;
        var type = $(this).data("action");
        if ($.cookie('dys_cookie_{$catid}_{$id}')) {
            layer.msg("你已经点过赞了");
            return false;
        }
        $.ajax({ 
             type: "POST", 
             url: "{:url('cms/index/digg')}", 
             data: {id:{$id},catid:{$catid},type:type}, 
             dataType: "json", 
             success: function(res){ 
                if(!res.code){
                    $.cookie('dys_cookie_{$catid}_{$id}', null); 
                    layer.msg(res.msg); 
                }else{ 
                    $.cookie('dys_cookie_{$catid}_{$id}', true); 
                    layer.msg(res.msg); 
                }
                $(".diggNum").text(res.data.count); 
             } 
        }) 
    }) 
}) 
</script>

添加控制器代码

然后写一个接口即可,application/cms/controller/Index.php添加一个方法

    public function digg()
    {
        $id    = $this->request->post("id/d", 0);
        $catid = $this->request->post("catid/d", 0);
        if (!$id || !$catid) {
            $this->error('参数不得为空!');
        }
        $modelInfo = cache('Model')[getCategory($catid)['modelid']];
        Db::name($modelInfo['tablename'])->where('id', $id)->setInc('like');
        $count = Db::name($modelInfo['tablename'])->value('like');
        $this->success('点赞成功!', '', ['count' => $count]);
    }