欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

筛选分类列表展示

程序员文章站 2022-08-09 18:38:14
接着昨天未完成的部分,下面接着实现,当筛选之后下面对应出现相关类型的内容。话不多说,先上效果图。 数据库设计: 文章表一张:art; 文章表的sortid字段关联分类表的id,type_id关联type表字段。填充数据大致如下,如果不清楚sortid,和type_id请移步至昨天我的另一篇博客《ph ......

 

接着昨天未完成的部分,下面接着实现,当筛选之后下面对应出现相关类型的内容。话不多说,先上效果图。

筛选分类列表展示

    数据库设计:

    文章表一张:art;

筛选分类列表展示

 

 文章表的sortid字段关联分类表的id,type_id关联type表字段。填充数据大致如下,如果不清楚sortid,和type_id请移步至昨天我的另一篇博客《 》

后端代码:

筛选分类列表展示

//文章列表
private function artlist($type,$direct,$sort,$order="art.readtime"){
if(!empty($type)){
$where['type_id'] = $type;
}
//找的是大分类下面的小分类
if(!empty($direct) && !empty($sort)){
$where['sort.id'] = $sort;
}else{
//查询所有的大分类
$sortlist = m("sort")->where("parent=0")->field("id")->select();
//得到所有的大分类一维数组
$list = array();
foreach ($sortlist as $item =>&$value){
$list[] = $value['id'];
}
if(in_array($sort,$list)){
//判断穿过来的分类参数是否在大分类里面
//拿到该大分类id的所有子分类id
$idlist = d("sort")->where("parent=$sort")->field("id")->select();
if($idlist){
$idarr = array();
foreach ($idlist as $item =>&$value){
$idarr[] = $value['id'];
}
$ids = implode(",",$idarr);
unset($where);
//判断此时类型是否为空
if(!empty($type)){
$where = "art.sortid in ($ids) and art.type_id=$type";
}else{
$where = "art.sortid in ($ids)";
}
}else{
$where['sort.id']= $sort;
}
}
}

$model = $this->model= "art";
$list = d($model)
->where($where)
->field("art.*")
->join("sort on sort.id=art.sortid")
->order($order)
->select();
return $list;
}
代码讲解:在首页列表多加一个参数artlist,通过传的$sort,$parent,$type三个参数来筛选对应的文章。代码部分我都进行了详细的注释,请看上面写的artlist方法。
前端页面 采用的是bootstrap,昨天忘了说,页面的代码很简单就是一个列表的展示,用到了thinkphp的标签,代码如下。

筛选分类列表展示

 

整体的效果给大家展示一下:

筛选分类列表展示

 


 筛选分类列表展示

 

 

   筛选分类列表展示