共公为模型、控制器、模板三部分代码。
其中pid
是无限分类重要的一点,pid的值指向上级分类的id。
定义了一个Model,实现栏目分类功能
public function catetree()
{
$cateres = $this->select();
return $this->sort($cateres);
}
#栏目排序
public function sort($data,$pid=0,$level=0)
{
#level在排序中并没有作用,而是用于前端输出时,判断Level后,添加 ─ 这种让分类明显的符号
static $arr= array();
foreach($data as $k=>$v){
if($v['pid'] == $pid){ #循环出顶级分类
$v['level'] = $level;
$arr[] = $v;
$this->sort($data,$v['id'],$level+1); #递归查询 $v['id'] 当前栏目id,因为子栏目的pid一定等于当前栏目id;如果是下一级栏目,给level+1
}
}
return $arr;
}
catetree
里面的$cateres = $this->select()
只是读取出来所需要的分类。然后交给sort
处理排序问题sort
的排序里有非常细的标注,如果个人的数据表中已经有level
字段,那么这里可以将level去掉
$cate = new CateModel();
$cateres = $cate->catetree();
$this->assign('cateres',$cateres);
return view('Template/catelst');
这块的作用其实就是使用刚才定义的Model中的catetree方法,并输出到模板
<select name="pid">
<option value="0">顶级栏目</option>
{volist name='catelst' id='vo'}
<option value="{$vo.id}"><?php echo str_repeat('─',$vo['level']*2) ?>{$vo.catename}</option>
{/volist}
</select>
<?php echo str_repeat('─',$vo['level']*2) ?>
这个的作用便是在下级栏目前加─
这个符号,*2
指加几个就改成几个
创始人微信
路漫漫其修远兮 吾将上下而求索添加创始人微信,一起交流心得
时间:2019年05月27日
时间:2017年05月03日
时间:2019年03月27日
时间:2017年01月13日
时间:2019年03月27日
评论