问答项目---分类数据做缓存处理!

这里的处理:

电脑/网络 是一个一级栏目,下面是它的子栏目,可以通过循环把它的子栏目压到它下面去,方便循环遍历:

由于:这块的数据,不会发生太大的变化,可以通过缓存,节省资源:

示例代码:

<?php
namespace HomeController;
use ThinkController;
class IndexController extends CommonController {
    public function index(){
        if(S('category')){
            $cate = S('category');
        }else{
            $cate = M('category')->where(array('pid'=>0))->select();
            foreach($cate as $k => $v){
                $cate[$k]['child'] = M('category')->where(array('pid'=>$v['id']))->select();
            }
            //执行之后 生成缓存 
            S('category',$cate,3600*24);
        }
        $this->assign('cate',$cate);
        $this->display();
    }
}

生成缓存具体的文件:

上面左右两块的展示方式不一样,可以考虑:foreach 里嵌套 for 循环:

<ul class='left-list'>
    <foreach name='cate' item="v">
    <li class='list-l1'>
        <div class='list-l1-wrap'>
            <h4><a href="{:U('List/index',array('id'=>$v['id']))}">{$v.name}</a></h4>
            <ul class='list-l2'>
                <for star='0' end='3' name='i'>
                    <li><a href="{:U('List/index',array('id'=>$v['id']))}">{$v['child'][$i]['name']}</a></li>
                </for>
            </ul>
        </div>
        <div class='list-more hidden'>
            <ul>
                 <for star='3' end='count($v["child"])' name='i'>
                    <li><a href="{:U('List/index',array('id'=>$v['id']))}">{$v['child'][$i]['name']}</a></li>
                </for>
            </ul>
        </div>
    </li>
    </foreach>    
</ul>
原文地址:https://www.cnblogs.com/e0yu/p/7445688.html