需求:在展示已有的文章列表的同时,把特定文章放到特定位置(位置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;
}
}
}
}