layui 简易后台 特定文章放到特定位置(layui+php,缓存)

需求:在展示已有的文章列表的同时,把特定文章放到特定位置(位置1-10),并规定放置时间。前端显示使用缓存替换特定位置的内容。

可直接新增文章下的回复。

方式一:添加原有的文章(通过固有id),通过id定位。

方式二:新增文章。新增后的id

代码:

<?php
	//include_once("/****global.php");
	if(!defined('MEMCACHE_HOST'))
	{
    define('MEMCACHE_HOST','1**5');
    define('MEMCACHE_PORT',1***2);
	}
	include_once('/*****memcache/memcache.php');//memcache缓存配置文件
	$cpage	= 'add_ad_post';
	$ask_adv_post_str	= M::Get('a****_list');
	$ask_adv_post_arr	= json_decode($ask_adv_post_str,true);
	ksort($ask_adv_post_arr);
	$dated	= date('Y-m-d H:i:s');

?>
<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
	<title>问****</title>
	<link rel="stylesheet" rev="stylesheet" href="http://***/city/style/style.css?v=4" type="text/css" />
	<link rel="stylesheet" href="//****/kadmin/zlmm/static/admin/lib/layui/css/layui.css" id="layui">
</head>
<body>
	<?php include_once('../global/nav.php');?>
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;"> <legend>客户问答</legend></fieldset>
<div style="margin-top: 20px;">
	<form class="layui-form" action="" method="post">
		<div class="layui-form-item">
			<label class="layui-form-label">基础信息</label>
			<div class="layui-input-inline" style="width: 115px">
				<input type="checkbox" name="base" lay-skin="switch" lay-filter="base" lay-text="新添加|已添加">
			</div>
			<div id="base" style="display: none;">
				<div class="layui-input-inline" style="width: 100px">
					<input type="text" id="crs_name" name="crs_name" style="width: 100px" class="layui-input" value="" placeholder="客户(可忽略)">
				</div>
				<div class="layui-input-inline" style="width: 100px">
					<input type="number" id="order_num" name="order_num" oninput="if(value>10)value=10;if(value<=0)value=''"  placeholder="1-10位置" class="layui-input" style="width: 100px" value="">
				</div>
				<div class="layui-input-inline">
					<input type="text" name="duration_dated" id="duration_dated" placeholder="显示时长(注意同位置时间段内是否已被占)" autocomplete="off" class="layui-input" style="width: 300px">
				</div>
			</div>
		</div>
		<div class="layui-form-item">
			<div class="layui-inline">
				<label class="layui-form-label">形式</label>
				<div class="layui-input-block">
					<input type="checkbox" name="type" lay-skin="switch" lay-filter="type" lay-text="新增问题|新增回复">
				</div>
			</div>
		</div>
		<div id="add_ask_id">
			<div class="layui-form-item">
				<div class="layui-inline" >
					<label class="layui-form-label">问题id</label>
					<div class="layui-input-inline" style="width: 100px">
						<input type="number" name="post_id" id="post_id" placeholder="请输入id" autocomplete="off" class="layui-input" style="width: 100px">
					</div>
				</div>
				<div class="layui-inline">
					<div class="layui-input-inline">
						<input type="text" id="post_title" placeholder="标题" readonly="readonly" autocomplete="off" class="layui-input" style="width: 500px">
					</div>
				</div>
			</div>
		</div>
		<div id="add_ask_all" style="display: none;">
			<div class="layui-form-item">
				<div class="layui-block">
					<label class="layui-form-label">问题标题</label>
					<div class="layui-input-block">
						<input type="text" name="title"  id="ask_title" placeholder="请输入标题" autocomplete="off" class="layui-input" style="width: 500px">
					</div>
				</div>
			</div>
<!-- 			<div class="layui-form-item">
				<div class="layui-inline">
					<label class="layui-form-label">发表日期</label>
					<div class="layui-input-block">
						<input type="checkbox" name="dated" lay-skin="switch" lay-filter="dated" lay-text="指定日期|当前日期">
					</div>
				</div>
				<div class="layui-inline s_dated" style="display: none;">
					<label class="layui-form-label">指定日期</label>
					<div class="layui-input-inline">
						<input type="text" name="date" id="date" autocomplete="off" class="layui-input">
					</div>
				</div>
			</div> -->
			<div class="layui-form-item layui-form-text">
				<label class="layui-form-label">问题正文</label>
				<div class="layui-input-block">
				  <textarea placeholder="请输入内容" name="content" class="layui-textarea" style="width:500px;height:100px;"></textarea>
				</div>
			</div>
			<div class="layui-form-item">
				<div class="layui-inline">
					<label class="layui-form-label">用户id</label>
					<div class="layui-input-block">
						<input type="checkbox" name="user_type" lay-skin="switch" lay-filter="user_type" lay-text="指定用户|随机马甲">
					</div>
				</div>
				<div id="user_type" class="layui-inline" style="display: none;">
					<div class="layui-input-inline" style="width: 100px">
						<input type="number" id="user_id" name="user_id" autocomplete="off" style="width: 100px" class="layui-input" value="" placeholder="user_id">
					</div>
					<div class="layui-input-inline">
						<input type="text" readonly="readonly" id="nickname" placeholder="未选择" class="layui-input" style="width: 100px" value="">
					</div>
				</div>
			</div>
		</div>
		<fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;"> <legend>批量回复:用户id不填则随机马甲用户</legend></fieldset>
		<div id="new_reply_list">
			<div class="layui-form-item layui-form-text">
				<label class="layui-form-label"></label>
				<div class="layui-input-inline">
				  <textarea placeholder="请输入回复内容" name="reply_content[]" class="layui-textarea" style="width:400px;min-height: 50px;padding: 0;"></textarea>
				</div>
				<div class="layui-input-inline">
				  <input type="number" placeholder="点赞数" name="zan[]" class="layui-input" style="width: 100px;height: 50px;"></input>
				</div>
				<div class="layui-input-inline">
				  <input type="number" placeholder="用户id" name="reply_user_id[]" class="layui-input" onblur="userData(this)" style="width: 100px;height: 50px;"></input>
				</div>
				<div class="layui-input-inline">
				  <input placeholder="用户名" class="layui-input" readonly="readonly" style="width: 100px;height: 50px;"></input>
				</div>
				<div class="layui-input-inline">
					<i class="layui-icon layui-icon-add-1" style="font-size: 30px; color: #1E9FFF;cursor: pointer;" id="add_reply_list"></i> 
				</div>
			</div>
		</div>

		<div class="layui-form-item">
			<div class="layui-input-block">
			  <button class="layui-btn" lay-submit lay-filter="submit">立即提交</button>
			  <button type="reset" class="layui-btn layui-btn-primary">重置</button>
			</div>
		</div>
	</form>
</div>
<div style="overflow-y:auto; overflow-x:auto;  width:400px; height:600px; position: fixed;right: 30px;top: 100px;">
<ul class="layui-timeline">
<?php foreach($ask_adv_post_arr as $k=>$v):?>
  <li class="layui-timeline-item">
    <i class="layui-icon layui-timeline-axis"></i>
    <div class="layui-timeline-content layui-text">
      <h3 class="layui-timeline-title">位置<?php echo $k;?></h3>
      <ul>
		<?php foreach($v as $key=>$value):?>
        <li <?php if($value['begin_time']<=$dated && $value['end_time']>=$dated){echo "style='color:red;'";}?> >
				<?php echo $value['csr_name'].";问答id:<a href=\"http://***cms/knowledge/detail.php?id=".$value['post_id']."\" target=\"_blank\" >".$value['post_id']."</a><br />时间段:".$value['begin_time']." - ".$value['end_time'];?>
		</li>
		<?php endforeach;?>
      </ul>
    </div>
  </li>
<?php endforeach;?>
<?php if(!$ask_adv_post_arr):?>
  <li class="layui-timeline-item">
    <i class="layui-icon layui-timeline-axis"></i>
    <div class="layui-timeline-content layui-text">
      <h3 class="layui-timeline-title">1-10位置均可用</h3>
    </div>
  </li>
<?php endif;?>
</ul>  
</div>
</body>

<script src="//****/kadmin/zlmm/static/admin/lib/layui/layui.js"></script>
<script type="text/template" id='new_reply'>
	<div class="layui-form-item layui-form-text">
		<label class="layui-form-label"></label>
		<div class="layui-input-inline">
		  <textarea placeholder="请输入回复内容" name="reply_content[]" class="layui-textarea" style="width:400px;min-height: 50px;padding: 0;"></textarea>
		</div>
		<div class="layui-input-inline">
		  <input type="number" placeholder="点赞数" name="zan[]" class="layui-input" style="width: 100px;height: 50px;"></input>
		</div>
		<div class="layui-input-inline">
		  <input type="number" placeholder="用户id" name="reply_user_id[]" class="layui-input" onblur="userData(this)" style="width: 100px;height: 50px;"></input>
		</div>
		<div class="layui-input-inline">
		  <input placeholder="用户名" readonly="readonly" class="layui-input" style="width: 100px;height: 50px;"></input>
		</div>
	</div>
</script>
<script>

  layui.use(['table','element','jquery','form','laydate'], function () {
    var $ = layui.jquery,
		form  = layui.form,
		laydate = layui.laydate;
	var url = '../sub/ask_adv.php';
	//日期
	laydate.render({
		elem: '#date'
		,type: 'datetime'
	});
	laydate.render({
		elem: '#duration_dated'
		,type: 'datetime'
		,range: true 
	});
	//失去焦点事件
	$('#post_id').blur(function(){
		var post_id = $('#post_id').val();
		if(post_id){
			var data = {'method':'get_ask_question_info','post_id':post_id};
			asynData(url,data,'post_title');
		}
	});
	$('#add_reply_list').click(function(){
		var template = $("#new_reply").html();
		$("#new_reply_list").append(template);
	});
	$('#user_id').blur(function(){
		var user_id = $('#user_id').val();
		if(user_id){
			var data = {'method':'get_user_info','user_id':user_id};
			asynData(url,data,'nickname');
		}
	});	

	function asynData(url,data,t){
		$.post(
			url,
			data,
			function(data){
				if(data.ret == 1){
					if(t != 'nickname' && t != 'post_title'){
						t.val(data.msg);
					}else{
						$('#'+t).val(data.msg);
					}
				}else{
					var index = layer.alert(data.msg,{icon:2},function(){ layer.close(index);});
				}
			},'json');
	}
	//监听指定开关
	form.on('switch(dated)', function(data){
		var obj    = $(data.elem);
		var change = this.checked
		if(change){
			$('.s_dated').show();
		}else{
			$('.s_dated').hide();
			$('#date').val('');
		}
	});
	form.on('switch(user_type)', function(data){
		var obj    = $(data.elem);
		var change = this.checked
		if(change){
			$('#user_type').show();
		}else{
			$('#user_type').hide();
			$('#date').val('');
		}
	});
	form.on('switch(type)', function(data){
		var obj    = $(data.elem);
		var change = this.checked
		if(change){
			$('#add_ask_all').show();
			$('#add_ask_id').hide();
		}else{
			$('#add_ask_id').show();
			$('#add_ask_all').hide();
		}
	});
	form.on('switch(base)', function(data){
		var obj    = $(data.elem);
		var change = this.checked
		if(change){
			$('#base').show();
		}else{
			$('#base').hide();
		}
	});
	  //监听提交
	form.on('submit(submit)', function(data){
		data.field.method = 'add_advice_post';
		//var	da = JSON.stringify(data.field);
		var	da = data.field;
		if(da.base=='on'){
			if(da.order_num=='' || da.duration_dated=='' ){
				var index = layer.msg('放置位置和显示时长均不能为空',{icon:2},function(){ layer.close(index);});
				return false;
			}
		}
		if(da.type=='on'){
			if(da.title=='' || da.content=='' ){
				var index = layer.msg('标题和内容均不能为空',{icon:2},function(){ layer.close(index);});
				return false;
			}
		}else{
			if(da.post_id==''){
				var index = layer.msg('问题id不能为空',{icon:2},function(){ layer.close(index);});
				return false;
			}
		}
		submitR(da);
		return false;
	});
	function submitR(da){
		console.log(da);
		$.post(
			url,
			da,
			function(obj){
				console.log(obj);
				if(obj.ret == 1){
					var index = layer.msg('添加成功',{time: 1000},function(){ layer.close(index);window.location.reload();});
				}else{
					var index = layer.alert(obj.msg,{icon:2},function(){ layer.close(index);});
				}
			},'json').error(function(ooo) { console.log(JSON.stringify(ooo)); });
	}
	//回复者id获取信息
	window.userData=function(th){
		var user_id = $(th).val();
		var reply_u = $(th).parent().next().children();
		if(user_id){
			var data = {'method':'get_user_info','user_id':user_id};
			asynData(url,data,reply_u);
		}
	}
});

</script>

前台页面显示:

//广告贴判断
$ask_adv_post_str	= M::Get('ask_a****n_list');
$ask_adv_post_arr	= json_decode($ask_adv_post_str,true);
foreach($ask_adv_post_arr as $k=>$v){
	if($v){
		foreach($v as $key=>$value){
			if($value['begin_time']<=$dated && $value['end_time']>=$dated){
				$sql	= "select * from `***` where `id`={$value['post_id']} limit 1";
				$ad_post= $ms->getRow($sql);
				$sql    = "select * from `a****t` where `***`={$value['post_id']} limit 1";
				$content= $ms->getRow($sql);
				if(mb_strlen($content['content'],'utf-8')>=55){
					$content['content'] = mb_substr($content['content'],0,55,'utf-8').'...';
				}
				$ad_post['content']	= $content['content'];
				$datas[$k-1]	= $ad_post;
			}
		}
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值