ThinkCMF----调用指定栏目的文章列表

做项目的时候,在用ThinkCMF在首页调用指定的栏目文章,但是没有找到好的方法,就自己写了一个。

但是又不想写标签,就在公用方法里面实现了:找到common.php

操作数据库,要用到think的控制器和think的数据库类:

<?php 
use thinkController;
use thinkDb;
/*
 * $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>

即可

原文地址:https://www.cnblogs.com/e0yu/p/9540967.html