做项目的时候,在用ThinkCMF在首页调用指定的栏目文章,但是没有找到好的方法,就自己写了一个。
但是又不想写标签,就在公用方法里面实现了:找到common.php
操作数据库,要用到think的控制器和think的数据库类:
<?php use think\Controller; use think\Db; /* * $cid 是栏目下的id */ function articlelist($cid,$limit=5){ $id = intval($cid); // 获取当前栏目下的所有子栏目ID $category_list = Db::name('portal_category')->field(array('id','parent_id'))->select(); $category_arr = array(); $cur_category_list = array(); array_push($cur_category_list,intval($id)); foreach($category_list as $v){ $arr = array(); $arr['id'] = $v['id']; $arr['pid'] = $v['parent_id']; array_push($category_arr,$arr); } //得到当前栏目所有的子栏目ids $cur_category_ids = array_merge($cur_category_list,get_all_child($category_arr,$id)); //获取当前所有子栏目的所有文章ids $all_post_ids_arr = array(); $all_post_ids = Db::name('portal_category_post')->where('category_id','in',$cur_category_ids)->field(array('post_id'))->select(); foreach($all_post_ids as $v){ array_push($all_post_ids_arr,$v['post_id']); } // 获取当前栏目及子栏目所有的文章列表 $where = array(); $where['id'] = array('in',$all_post_ids_arr); $where['post_type'] = 1; $where['post_status'] = 1; $pagelist_arr = Db::name('portal_post')->where($where)->paginate($limit); $page = $pagelist_arr->render(); // 处理跳转链接 和 栏目的图片 $pagelist = array(); foreach($pagelist_arr as $k => $v){ $v['thumb'] = '/upload/'.json_decode($v['more'],true)['thumbnail']; $v['category_id'] = get_category_id($v['id']); array_push($pagelist,$v); } return $pagelist; } function get_category_id($id){ $categoryinfo = Db::name('portal_category_post')->where('post_id','eq',$id)->field('category_id')->find(); return $categoryinfo['category_id']; }
怎么调用?
<?php $articlelist = articlelist(4,7);?> <foreach name="articlelist" item="v"> <dl class="partTwoChangeBoxCom o"> <dt class="ab"><a href="{:cmf_url('portal/Article/index',array('id'=>$v['id'],'cid'=>$v['category_id']))}"><img src="__ROOT__{$v['thumb']}" width="324" height="224" alt=""></a></dt> <dd class="text ab"> <a href="{:cmf_url('portal/Article/index',array('id'=>$v['id'],'cid'=>$v['category_id']))}" class="pr"> <span class="line palt db"></span> <span class="text db">{$v['post_title']}</span> <span class="eng db">{$v['url']}</span> <span class="icon db part"></span> </a> </dd> </dl> </foreach>
即可