zoukankan      html  css  js  c++  java
  • 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>

    即可

  • 相关阅读:
    Servlet系列教材 (九)- 基础
    Servlet系列教材 (八)- 基础
    Servlet系列教材 (七)- 基础
    Servlet系列教材 (六)- 基础
    Servlet系列教材 (五)- 基础
    Servlet系列教材 (四)- 基础
    Servlet系列教材 (三)- 基础
    Servlet系列教材 (二)- 基础
    Servlet系列教材 (一)- 基础
    Tomcat系列教材 (八)- 部署J2EE应用
  • 原文地址:https://www.cnblogs.com/e0yu/p/9540967.html
Copyright © 2011-2022 走看看