P32 删除了很多不用的功能,分离了一些部分出来,具体要看视频
<aside class="Hui-aside">
<div class="menu_dropdown bk_2">
<dl id="menu-article">
<dt><i class="Hui-iconfont"></i> 新闻中心<i class="Hui-iconfont menu_dropdown-arrow"></i></dt>
<dd>
<ul>
<li><a data-href="article-list.html" data-title="新闻分类" href="javascript:void(0)">新闻分类</a></li>
<li><a data-href="article-list.html" data-title="新闻列表" href="javascript:void(0)">新闻列表</a></li>
</ul>
</dd>
</dl>
<dl id="menu-product">
<dt><i class="Hui-iconfont"></i> 产品中心<i class="Hui-iconfont menu_dropdown-arrow"></i></dt>
<dd>
<ul>
<li><a data-href="product-category.html" data-title="产品分类" href="javascript:void(0)">产品分类</a></li>
<li><a data-href="product-list.html" data-title="产品列表" href="javascript:void(0)">产品列表</a></li>
</ul>
</dd>
</dl>
<dl id="menu-admin">
<dt><i class="Hui-iconfont"></i> 权限管理<i class="Hui-iconfont menu_dropdown-arrow"></i></dt>
<dd>
<ul>
<li><a data-href="admin-role.html" data-title="角色管理" href="javascript:void(0)">角色管理</a></li>
<li><a data-href="admin-permission.html" data-title="权限管理" href="javascript:void(0)">权限管理</a></li>
<li><a data-href="admin-list.html" data-title="管理员列表" href="javascript:void(0)">管理员列表</a></li>
</ul>
</dd>
</dl>
<dl id="menu-system">
<dt><i class="Hui-iconfont"></i> 系统管理<i class="Hui-iconfont menu_dropdown-arrow"></i></dt>
<dd>
<ul>
<li><a data-href="system-base.html" data-title="系统设置" href="javascript:void(0)">系统设置</a></li>
<li><a data-href="system-category.html" data-title="轮播图" href="javascript:void(0)">轮播图</a></li>
<li><a data-href="system-data.html" data-title="前台导航" href="javascript:void(0)">前台导航</a></li>
</ul>
</dd>
</dl>
</div>
</aside>

<li><a data-href="index.php?m=admin&c=news.category" data-title="新闻分类" href="javascript:void(0)">新闻分类</a></li>
<li><a data-href="index.php?m=admin&c=news.list" data-title="新闻列表" href="javascript:void(0)">新闻列表</a></li>
require_once('init.php');
D:\php学习\H-ui_admin_v3.1.3.1\H-ui.admin

//这里这样写是因为前后端的文件名其实是相同的,
//为了不用每次写那么多,这样写可以直接调$tpl_name
//$c 就是文件名
$tpl_name = $c.'.html';
这样,只要用$tpl_name就可以拿到网址了
require_once('init.php');
$smarty->display('welcome.html');//调用welcome页面
改成:
$smarty->display($tpl_name);//调用welcome页面
在templates admin文件夹下建一个headers.html
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link rel="Bookmark" href="/favicon.ico" >
<link rel="Shortcut Icon" href="/favicon.ico" />
<!--[if lt IE 9]>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/html5shiv.js"></script>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/respond.min.js"></script>
<![endif]-->
<link rel="stylesheet" type="text/css" href="<{$smarty.const.__STATIC__}>static/h-ui/css/H-ui.min.css" />
<link rel="stylesheet" type="text/css" href="<{$smarty.const.__STATIC__}>static/h-ui.admin/css/H-ui.admin.css" />
<link rel="stylesheet" type="text/css" href="<{$smarty.const.__STATIC__}>lib/Hui-iconfont/1.0.8/iconfont.css" />
<link rel="stylesheet" type="text/css" href="<{$smarty.const.__STATIC__}>static/h-ui.admin/skin/default/skin.css" id="skin" />
<link rel="stylesheet" type="text/css" href="<{$smarty.const.__STATIC__}>static/h-ui.admin/css/style.css" />
<!--[if IE 6]>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/DD_belatedPNG_0.0.8a-min.js" ></script>
<script>DD_belatedPNG.fix('*');</script>
<![endif]-->
<title>仿腾讯官网</title>
</head>
<{include file="header.html"}>

<!--_footer 作为公共模版分离出去-->
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>static/h-ui/js/H-ui.min.js"></script>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>static/h-ui.admin/js/H-ui.admin.js"></script>
<!--/_footer 作为公共模版分离出去-->
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" />
<meta http-equiv="Cache-Control" content="no-siteapp" />
<link rel="Bookmark" href="/favicon.ico" >
<link rel="Shortcut Icon" href="/favicon.ico" />
<!--[if lt IE 9]>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/html5shiv.js"></script>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/respond.min.js"></script>
<![endif]-->
<link rel="stylesheet" type="text/css" href="<{$smarty.const.__STATIC__}>static/h-ui/css/H-ui.min.css" />
<link rel="stylesheet" type="text/css" href="<{$smarty.const.__STATIC__}>static/h-ui.admin/css/H-ui.admin.css" />
<link rel="stylesheet" type="text/css" href="<{$smarty.const.__STATIC__}>lib/Hui-iconfont/1.0.8/iconfont.css" />
<link rel="stylesheet" type="text/css" href="<{$smarty.const.__STATIC__}>static/h-ui.admin/skin/default/skin.css" id="skin" />
<link rel="stylesheet" type="text/css" href="<{$smarty.const.__STATIC__}>static/h-ui.admin/css/style.css" />
<!--[if IE 6]>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/DD_belatedPNG_0.0.8a-min.js" ></script>
<script>DD_belatedPNG.fix('*');</script>
<![endif]-->
<title>仿腾讯官网</title>
</head>
<!--_footer 作为公共模版分离出去-->
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>static/h-ui/js/H-ui.min.js"></script>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>static/h-ui.admin/js/H-ui.admin.js"></script> <!--/_footer 作为公共模版分离出去-->
<!-- 这是js写的日历插件,也剪切过来 -->
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" ">
/*弹出窗口 - 全屏*/
function show_window_full(title,url){
var index = layer.open({
type: 2,
title: title,
content: url
});
layer.full(index);
}
/*弹出窗口 - 非全屏*/
function show_window(title,url,w,h){
layer_show(title,url,w,h);
}
</script>

require_once('init.php');
$smarty->display($tpl_name);
<{include file="header.html"}>

<!--_footer 作为公共模版分离出去-->
<script type="text/javascript" src="lib/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript" src="lib/layer/2.4/layer.js"></script>
<script type="text/javascript" src="static/h-ui/js/H-ui.min.js"></script>
<script type="text/javascript" src="static/h-ui.admin/js/H-ui.admin.js"></script>
<!--/_footer 作为公共模版分离出去-->
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/jquery.validation/1.14.0/jquery.validate.js"></script>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/jquery.validation/1.14.0/validate-methods.js"></script>
<script type="text/javascript" src="<{$smarty.const.__STATIC__}>lib/jquery.validation/1.14.0/messages_zh.js"></script>



<{include file="header.html"}>
<body>
<article class="page-container">
<form class="form form-horizontal" id="form-admin-add">
<div class="row cl">
<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>名称:</label>
<div class="formControls col-xs-8 col-sm-9">
<input type="text" class="input-text" value="" name="name">
</div>
</div>
<div class="row cl">
<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>显示:</label>
<div class="formControls col-xs-8 col-sm-9 skin-minimal">
<div class="radio-box">
<input name="is_show" type="radio" id="show-1" value="1" checked>
<label for="sex-1">显示</label>
</div>
<div class="radio-box">
<input type="radio" id="show-2" name="is_show" value="0">
<label for="show-2">隐藏</label>
</div>
</div>
</div>
<div class="row cl">
<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>排序:</label>
<div class="formControls col-xs-8 col-sm-9">
<input type="text" class="input-text" value="" name="sort">
</div>
</div>
<div class="row cl">
<div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
<input class="btn btn-primary radius" type="submit" value=" 提交 ">
</div>
</div>
</form>
</article>
<script type="text/javascript">
$(function(){
$('.skin-minimal input').iCheck({
checkboxClass: 'icheckbox-blue',
radioClass: 'iradio-blue',
increaseArea: '20%'
});
$("#form-admin-add").validate({
rules:{
adminName:{
required:true,
minlength:4,
maxlength:16
},
password:{
required:true,
},
password2:{
required:true,
equalTo: "#password"
},
sex:{
required:true,
},
phone:{
required:true,
isPhone:true,
},
email:{
required:true,
email:true,
},
adminRole:{
required:true,
},
},
onkeyup:false,
focusCleanup:true,
success:"valid",
submitHandler:function(form){
$(form).ajaxSubmit({
type: 'post',
url: "xxxxxxx" ,
success: function(data){
layer.msg('添加成功!',{icon:1,time:1000});
},
error: function(XmlHttpRequest, textStatus, errorThrown){
layer.msg('error!',{icon:1,time:1000});
}
});
var index = parent.layer.getFrameIndex(window.name);
parent.$('.btn-refresh').click();
parent.layer.close(index);
}
});
});
</script>
<!--/请在上方写此页面业务相关的脚本-->
</body>
</html>

<{include file="header.html"}>
<body>
<article class="page-container">
<form class="form form-horizontal" id="form-admin-add">
<div class="row cl">
<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>名称:</label>
<div class="formControls col-xs-8 col-sm-9">
<input type="text" class="input-text" value="" name="name">
</div>
</div>
<div class="row cl">
<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>显示:</label>
<div class="formControls col-xs-8 col-sm-9 skin-minimal">
<div class="radio-box">
<input name="is_show" type="radio" id="show-1" value="1" checked>
<label for="sex-1">显示</label>
</div>
<div class="radio-box">
<input type="radio" id="show-2" name="is_show" value="0">
<label for="show-2">隐藏</label>
</div>
</div>
</div>
<div class="row cl">
<label class="form-label col-xs-4 col-sm-3"><span class="c-red">*</span>排序:</label>
<div class="formControls col-xs-8 col-sm-9">
<input type="text" class="input-text" value="" name="sort">
</div>
</div>
<div class="row cl">
<div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
<input class="btn btn-primary radius" type="submit" value=" 提交 ">
</div>
</div>
</form>
</article>
<script type="text/javascript">
$(function(){
$('.skin-minimal input').iCheck({
checkboxClass: 'icheckbox-blue',
radioClass: 'iradio-blue',
increaseArea: '20%'
});
$("#form-admin-add").validate({
rules:{
name:{
required:true,
},
},
message:{
name:{
required:'分类名称必须填写',
},
},
onkeyup:false,
focusCleanup:true,
success:"valid",
submitHandler:function(form){
// ajax提交:
$(form).ajaxSubmit({
type: 'post',
url: "index.php?m=admin&c=news_category_add" ,// 提交给谁
success: function(data){
layer.msg('添加成功!',{icon:1,time:1000});
},
error: function(XmlHttpRequest, textStatus, errorThrown){
layer.msg('error!',{icon:1,time:1000});
}
});
// var index = parent.layer.getFrameIndex(window.name);
// parent.$('.btn-refresh').click();
// parent.layer.close(index);
}
});
});
</script>
<!--/请在上方写此页面业务相关的脚本-->
</body>
</html>
<?php
require_once('init.php');
if( !empty($_POST)){
echo 111;//ajax 异步传输
}else{
$smarty->display($tpl_name);
}
?>

name: 111
is_show: 1
sort: 1

<?php
require_once('init.php');
if( !empty($_POST)){
//在这里接收html页面传过来的三个值
$name = $_POST['name'];
$is_show = $_POST['is_show'];
//这个值有默认值,所以判断一下
//传值就使用传过来的值,空值就使用默认值0
$sort = !empty($_POST['sort'])?intval($_POST['sort']):0;
//接收到上面出递过来的值之后,用sql语句将数据写入表中
$sql = "insert into news_category(name, is_show, sort) values ('$name','$is_show', '$sort')";
echo $sql;
}else{
$smarty->display($tpl_name);
}
?>

<script type="text/javascript">
$(function(){
$('.skin-minimal input').iCheck({
checkboxClass: 'icheckbox-blue',
radioClass: 'iradio-blue',
increaseArea: '20%'
});
$("#form-admin-add").validate({
rules:{
name:{
required:true,
},
},
message:{
name:{
required:'分类名称必须填写',
},
},
onkeyup:false,
focusCleanup:true,
success:"valid",
submitHandler:function(form){
// ajax提交:
$(form).ajaxSubmit({
type: 'post',
url: "index.php?m=admin&c=news_category_add" ,// 提交给谁
success: function(data){
if(data == 1){
//time:2000这个函数弹出的弹窗默认不会自动关闭
//设置时间就是自动关闭提示信息的时间
layer.msg('添加成功!',{icon:1,time:2000});
//视频中这里不显示弹窗提示,因为程序执行时间太短,所以需要加定时器
//但是自己的是显示的
//这个函数表示:前面是要做的事,后面设置时间为2秒
//setTimeout(function(){},2000);
setTimeout(function(){
//如果添加成功,在提示成功之后,关闭当前窗口
//并刷新父级窗口,显示新添加信息
//逻辑:程序自身无法杀自身,只能通过其他程序
//所以这里要先找到他的父级,再刷新父级,再通过父级关闭它
//之所以刷新在中间,而不是先关闭再刷新
//是因为关闭了它自己就没有子级父级的概念了
var index = parent.layer.getFrameIndex(window.name);
parent.location.reload();
parent.layer.close(index);
},2000);
}else{
layer.msg('添加失败!',{icon:2,time:2000});// 2000表示提示信息留存时间
}
},
error: function(XmlHttpRequest, textStatus, errorThrown){
layer.msg('error!',{icon:1,time:1000});
}
});
}
});
});
</script>
<?php
require_once('init.php');
if( !empty($_POST)){
//在这里接收html页面传过来的三个值
$name = $_POST['name'];
$is_show = $_POST['is_show'];
//这个值有默认值,所以判断一下
//传值就使用传过来的值,空值就使用默认值0
$sort = !empty($_POST['sort'])?intval($_POST['sort']):0;
//接收到上面出递过来的值之后,用sql语句将数据写入表中
$sql = "insert into news_category(name, is_show, sort) values ('$name','$is_show', '$sort')";
//使用封装好的操作函数库的查询函数调用它,将上面的数据库语言作为参数传给函数
$ret = execute($sql);
//因为是异步操作,所以查询完了之后不能直接跳转页面,需要进行判定
//然后在news_category_add.html页面接收值
if( $ret !== false){
echo 1;
}else{
echo 0;
}
}else{
$smarty->display($tpl_name);
}
?>


<?php
require_once('init.php');
//分类数据添加完成之后,需要显示
//先查询数据表,然后将数据分配出去,在news_category.html页面接收
//排序按照sort排序,如果sort都是一样的,就按id降序排列
$sql = "select * from news_category order by sort, id desc";
$list = get_all($sql);
$smarty->assign('list', $list);
$smarty->display($tpl_name);
?>
<{include file="header.html"}>
<body>
<nav class="breadcrumb"><i class="Hui-iconfont"></i> 首页 <span class="c-gray en">></span> 新闻中心 <span class="c-gray en">></span> 新闻分类 <a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont"></i></a></nav>
<div class="page-container">
<div class="cl pd-5 bg-1 bk-gray"> <span class="l"><a href="javascript:;" onclick="datadel()" class="btn btn-danger radius"><i class="Hui-iconfont"></i> 批量删除</a> <a class="btn btn-primary radius" onclick="show_window('添加分类', 'index.php?m=admin&c=news_category_add')" href="javascript:;"><i class="Hui-iconfont"></i> 添加分类</a></span> <span class="r">共有数据:<{$count}> 条</span> </div>
<div class="mt-20">
<table class="table table-border table-bordered table-bg table-hover table-sort table-responsive">
<thead>
<tr class="text-c">
<th width="25"><input type="checkbox" name="" value=""></th>
<th width="80">ID</th>
<th width="80">分类</th>
<th width="80">排序</th>
<th width="60">显示</th>
<th width="60">操作</th>
</tr>
</thead>
<tbody>
<{foreach $list as $v}>
<!-- 把数组中的值循环赋值,显示在表格中 -->
<tr class="text-c">
<td><input type="checkbox" value="" name=""></td>
<td> <{$v.id}> </td>
<td> <{$v.name}> </td>
<td> <{$v.sort}> </td>
<!-- 判断是否显示 -->
<td class="td-status">
<{if $v.is_show == 1}>
<span class="label label-success radius">显示</span>
<{else}>
<span class="label label-danger radius">隐藏</span>
<{/if}>
</td>
<td class="f-14 td-manage"><a style="text-decoration:none" onClick="article_stop(this,'10001')" href="javascript:;" title="下架"><i class="Hui-iconfont"></i></a> <a style="text-decoration:none" class="ml-5" onClick="article_edit('资讯编辑','article-add.html','10001')" href="javascript:;" title="编辑"><i class="Hui-iconfont"></i></a> <a style="text-decoration:none" class="ml-5" onClick="article_del(this,'10001')" href="javascript:;" title="删除"><i class="Hui-iconfont"></i></a></td>
</tr>
<{/foreach}>
</tbody>
</table>
</div>
</div>
<!--请在下方写此页面业务相关的脚本-->
<script type="text/javascript">
/*资讯-删除*/
function article_del(obj,id){
layer.confirm('确认要删除吗?',function(index){
$.ajax({
type: 'POST',
url: '',
dataType: 'json',
success: function(data){
$(obj).parents("tr").remove();
layer.msg('已删除!',{icon:1,time:1000});
},
error:function(data) {
console.log(data.msg);
},
});
});
}
</script>
</body>
</html>

<?php
require_once('init.php');
//分类数据添加完成之后,需要显示
//先查询数据表,然后将数据分配出去,在news_category.html页面接收
//排序按照sort排序,如果sort都是一样的,就按id降序排列
$sql = "select * from news_category order by sort, id desc";
$list = get_all($sql);
$smarty->assign('list', $list);
//没有分页的情况下,可以用count获取共有多少列数据
//在news_category.html页面用<{$count}>接收显示
$smarty->assign('count',count($list));
$smarty->display($tpl_name);
?>
<span class="r">共有数据:<{$count}> 条</span>

网友评论