极致CMS帮助文档极致CMS帮助文档
首页
论坛
视频
加群
工具
GitHub
首页
论坛
视频
加群
工具
GitHub
  • 引言
  • 条款
  • 起步
  • 基础标签

    • 系统配置
    • 配置栏目
    • 栏目导航
    • 面包屑导航
    • 栏目列表
    • 单页
    • 文章内容页
    • 商品内容页
    • 点击量
    • 点赞
    • 收藏
    • 评论
    • 购买
    • 轮播图/幻灯片
    • 友情链接
    • 网站底部
    • 自定义字段
    • TAG
    • 内链
    • 碎片化
  • LOOP标签

    • 基本用法
    • 分页
    • 空数据
    • tid
    • like
    • notlike
    • limit
    • jzattr
    • day
    • table
    • sql
    • jzcache
    • notjz
  • Screen筛选
  • 功能标签
  • 极致模型函数
  • 自定义路由
  • 相关统计
  • 邮箱配置
  • 多语言支持
  • 搜索模块

    • 单模型搜索
    • 多模型搜索
    • 搜索结果页
  • 留言模块

    • 基本用法
    • 高级用法
    • 搜索结果页
  • 自定义模块
  • 模板制作

    • 准备工作
    • 网站栏目
    • 页面规划
    • 自定义函数
    • 模板信息
    • 客户权限
    • 桌面设置
    • 上线部署
  • 模板列表
  • 插件相关

    • 安装卸载
    • 控制器方法覆盖(简单)
    • 控制器方法钩子(高级)
    • 覆盖Common公共控制器
    • 极致CMS升级插件
    • 系统API接口插件
    • 数据库修复插件
    • 多语言建站
    • 模板助手插件
    • 阿里云短信注册插件
    • 独立静态网站插件
    • 云储存插件
    • Excel导入导出插件
    • 后台登录安全插件
    • 屏蔽IP插件
    • 在线编辑模板插件
    • 生成多尺寸缩略图插件
    • 火车头采集Web发布插件
    • 伪原创插件
    • 留言发送邮箱插件
    • 留言提交安全插件
    • QQ一键登录插件
    • Skycaiji蓝天采集API接口插件
    • 多域名绑定插件
    • 百度SEO推送
    • 百度百家推送
    • 极致插件示例
    • 栏目便捷工具
  • 支付相关

    • 支付宝支付
    • 微信支付
    • 立即支付
    • 接入第三方支付
  • 会员模块

    • 页面模板说明
    • 个人中心
    • 我的资料/修改密码
    • 我的关注
    • 我的粉丝
    • 我的投稿
    • 我的收藏
    • 我的喜欢
    • 我的评论
    • 我的钱包
    • 购买记录
    • 我的购物车
    • 订单管理
    • 消息设置
    • 公开页
    • 会员登录
    • 会员注册
    • 忘记密码
    • 微信登录
  • 微信小程序

    • 开始起步
    • 小程序开发
    • API接口
    • 轮播图/幻灯片
    • 获取栏目信息
    • 获取内容详情
    • 留言交互
  • Windows部署
  • 宝塔一键部署
  • 伪静态配置
  • 系统架构
  • 数据字典
  • 视频教程
  • 版本更新
  • Vue & App接入(v2.5.2+)

    • 验证码
    • 上传文件
    • 会员注册
    • 会员登录
    • 找回密码
    • 获取用户信息
    • 修改用户信息
    • 我的文章
    • 发布文章
    • 删除文章
    • 获取单篇文章信息
    • 我的收藏
    • 收藏/取消收藏
    • 是否收藏
    • 我的点赞
    • 点赞/取消点赞
    • 是否点赞
  • 常见问题

    • 如何判断首页,栏目页,详情页,单页?
    • 如何调用关联和相关文章内容?
    • 搜索超出设定范围如何解决?
    • 判断用户是否购买商品?
    • 判断会员分组?
    • 如何输出内容图片?
    • 如何判断自己是否适合使用极致CMS?
    • ajax数据交互,加载更多功能实现?
    • 如何实现后台录入时自定义检测重复内容的功能?
  • 附录

    • 时间格式
    • 富文本编辑器
    • 二维码生成
    • 验证码生成
    • 自定义后台主页
    • 客户端判断
    • classtypedata数据详解
    • 文章归档
    • RSS
    • 制作内容分页
    • 各种时间查询问题解决
    • 更换编辑器

基本使用

评论需要登录会员才可以使用,但是,目前评论类互联网审核比较严格,所以,一般不建议开放评论。

评论条数统计

内容页

{fun M('comment')->getCount(['isshow'=>1,'aid'=>$jz['id'],'tid'=>$jz['tid']])}

指定用户评论条数

用户ID=1

{fun M('comment')->getCount(['isshow'=>1,'userid'=>1])}

评论封装

注意:需要引入 layui 和 jquery,当前模块封装的是内容页变量,其他页面请自行修改!!!

  <div class="comment-area section-space--pt_60 section-space--pb_100">
	<div class="container">
	<div class="row comment-area section-space--pt_60">
	  <div class="m-auto">
		<div class="comment-list-wrapper">
		  <h3 class="widget-title mb-30">评论 (<span id="jz_comment_num">{$jz['comment_num']}</span>)</h3>
		  <ol class="comment-list" id="jz_comment_list">
			
		  </ol>
		  <div class="comment-page-bar">
		  <span class="comment-page" onclick="prevmessagelist()" >上一页</span>
		  <span class="comment-page" onclick="nextmessagelist()" >下一页</span>
		  </div>
		</div>
	  </div>
	</div>

	<div class="row comment-area section-space--pt_60">
      <div class="section-title">
        <h3 class="title">我要点评</h3>
      </div>
      <form action="" class="comment-form-area">
        <div class="row">
        <input name="go" value="1" placeholder="表示" id="go" type="hidden" />
		<input name="star" value="0" placeholder="评论星星数"  id="star" type="hidden" />
		<input name="tid" id="tid" value="{$type['id']}"  type="hidden" />
		<input name="aid" id="aid" value="{$jz['id']}" placeholder="文章ID"   type="hidden" />
		<input name="zid" value="0" id="zid" placeholder="评论层ID"  type="hidden" />
		<input name="pid" value="0" id="pid" placeholder="回复层ID"  type="hidden" />
          <div class="col-lg-12">
            <div class="single-input">
              <textarea
				id="content"
                name="textarea"
				{if(!$islogin)}disabled{/if}
                placeholder="输入评论内容"
              ></textarea>
            </div>
          </div>
          <div class="col-lg-12">
		  {if($islogin)}
            <div class="submit-button text-center">
              <button
                class="btn-large btn-primary"
                type="button"
				onclick="sendmsg()"
              >
                提 交
              </button>
            </div>
		   {else}
		   您还未登录,无法发表评论!<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#loginModel">立即登录</button>
		   {/if}
          </div>
        </div>
      </form>
    </div>
  
	
	
	
	</div>
	</div>
	
	<script>
	//发送评论
	function sendmsg(){
    	var star = $("#star").val();
    	var tid = $("#tid").val();
    	var aid = $("#aid").val();
    	var zid = $("#zid").val();
    	var pid = $("#pid").val();
    	var content = $("#content").val();
    	if(content==''){
    		layer.alert('评论内容不能为空!');
    		return false;
    	}
    	$.post('/comment/index',{star:star,tid:tid,aid:aid,zid:zid,pid:pid,body:content,ajax:1,go:1},function(res){
    		if(res.code==0){
    			layer.msg(res.msg,{icon:6,time:2000},function(){
    				location.reload();
    			})
    		}else{
    			layer.msg(res.msg,{icon:5,time:2000})
    		}
    	},'json');
    	
    	return false;
    	
    	
    }
    function reply(pid,username,zid){
    	$("#pid").val(pid);
    	$("#zid").val(zid);
    	$("#content").val('[@'+username+']');
    	$("#content").focus();
    }

    //获取评论列表
    function getmessagelist(tid,aid,page){
    	$.ajax({
    		 url:"/comment/getlist",
    		 dataType:"json",
    		 data:{tid:tid,aid:aid,page:page,limit:10},
    		 async:true,
    		 type:"GET",
    		 success:function(r){
    			if(r.code==0){
    				var len = r.data.list.length;
    				var html = '';
    				if(len>0){
    					for(var i=0;i<len;i++){
    						var rdata = r.data.list[i];
    						html+='<li class="comment">'+
    							  '<div class="comment-2">'+
    								'<div class="comment-author-info">'+
    								  '<div class="comment-author vcard">'+
    									'<img alt="'+rdata.user.username+'" src="'+rdata.user.litpic+'" onerror="this.src=\'{$tpl}static/picture/comments-3.png\'" />'+
    								  '</div>'+
    								  '<div class="comment-content">'+
    									'<div class="meta">'+
    									  '<div class="comment-content-top">'+
    										'<div class="comment-actions">'+
    										  '<h6 class="fn">'+rdata.user.username+'</h6>'+
    										  '<span class="time">'+rdata.addtime+'</span>'+
    										'</div>'+
    									  '</div>'+
    									  '<a class="comment-reply-link" onclick="reply('+rdata.id+',\''+rdata.user.username+'\','+rdata.id+')"><i class="icofont-reply"></i> 回复</a>'+
    									'</div>'+
    								  '</div>'+
    								'</div>'+
    								'<div class="comment-text">'+
    								  '<p>'+rdata.body+
    								  '</p>'+
    								'</div>'+
    							  '</div>';
    						var llen = rdata.children.length;
    						if(llen>0){
    							html+='<ol class="children">';
    							for(var j=0;j<llen;j++){
    								var rrdata = rdata.children[j];
    								html+='<li class="comment">'+
    							  '<div class="comment-2">'+
    								'<div class="comment-author-info">'+
    								  '<div class="comment-author vcard">'+
    									'<img alt="'+rrdata.user.username+'" src="'+rrdata.user.litpic+'" onerror="this.src=\'{$tpl}static/picture/comments-3.png\'" />'+
    								  '</div>'+
    								  '<div class="comment-content">'+
    									'<div class="meta">'+
    									  '<div class="comment-content-top">'+
    										'<div class="comment-actions">'+
    										  '<h6 class="fn">'+rrdata.user.username+'</h6>'+
    										  '<span class="time">'+rrdata.addtime+'</span>'+
    										'</div>'+
    									  '</div>'+
    									  '<a class="comment-reply-link" onclick="reply('+rrdata.id+',\''+rrdata.user.username+'\','+rdata.id+')"><i class="icofont-reply"></i> 回复</a>'+
    									'</div>'+
    								  '</div>'+
    								'</div>'+
    								'<div class="comment-text">'+
    								  '<p>'+rrdata.body+
    								  '</p>'+
    								'</div>'+
    							  '</div>';
    							}
    							html+='</ol>';
    						}
    						html+='</li>';
    					}
    	
    					$("#jz_comment_list").html(html);
    				}else{
    					var page = r.data.allpage;
    					//layer.msg('没有了',{icon:6,time:1000});
    				}
    				
    				$("#jz_comment_num").html(r.data.count);
    				var allpage = parseInt(r.data.allpage);
    				if(allpage>1){
    					$(".comment-page-bar").show();
    				}else{
    					$(".comment-page-bar").hide();
    				}
    				
    			}
    		 }
    	})
    }
    //下一页评论
    function nextmessagelist(){
    	page++;
    	var tid = $("#tid").val();
    	var aid = $("#aid").val();
    	getmessagelist(tid,aid,page)
    }
    //上一页评论
    function prevmessagelist(){
    	page = page--;
    	page = page<0 ? 1 : page;
    	var tid = $("#tid").val();
    	var aid = $("#aid").val();
    	getmessagelist(tid,aid,page)
    }
    	
    
     var page = 1;
     //内容页变量,其他页面请自行修改
     getmessagelist({$jz['tid']},{$jz['id']},page);	
    //回复其他人	
    function reply(pid,username){
    	$("#pid").val(pid);
    	$("#content").val('[@'+username+']');
    	$("#content").focus();
    }	
	</script>
	

输出指定用户评论内容

假设用户ID=1

{loop table="comment" userid="1" as="v"}
{php
$user = memberInfo($v['userid']);
/}
评论用户:{$user['username']}
用户头像:{$user['litpic']}
评论内容:{$v['body']}
评论时间:{fun date('Y-m-d H:i:s',$v['addtime'])}

{/loop}

如果要指定文章内的评论,请加上对应的参数 aid 和 tid

根据文章输出对应评论

文章ID=1,栏目ID=2

{loop table="comment" aid="1" tid="2" as="v"}
{php
$user = memberInfo($v['userid']);
/}
评论用户:{$user['username']}
用户头像:{$user['litpic']}
评论内容:{$v['body']}
评论时间:{fun date('Y-m-d H:i:s',$v['addtime'])}

{/loop}

Edit this page
Last Updated:
Contributors: RMC
Prev
收藏
Next
购买