thinkCMF----列表页跳转

Posted e0yu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkCMF----列表页跳转相关的知识,希望对你有一定的参考价值。

thinkCMF列表循环有个:用来循环文章列表。

<php>
    $where=[
    ‘post.create_time‘=>[‘egt‘,0]
    ];
    $page=[
        ‘list_rows‘=>10,
        ‘next‘=>‘下一页‘,
        ‘prev‘=>‘上一页‘
    ];
</php>
<portal:articles item="vo" where="$where" order="post.create_time DESC" page="$page" relation="categories" categoryIds="$category.id" returnVarName="articles_data">
</portal:articles>

但是用这个,一直用不了,就自己重新写了一个:修改 ListController.class 类:

class ListController extends HomeBaseController{
    public function index(){
        $id = $this->request->param(‘id‘, 0, ‘intval‘);            
        $portalCategoryModel = new PortalCategoryModel();
        $category = $portalCategoryModel->where(‘id‘, $id)->where(‘status‘, 1)->find();
        // 获取当前栏目下的所有子栏目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(12);
        $page = $pagelist_arr->render();
        // 处理跳转链接 和 栏目的图片
        $pagelist = array();
        foreach($pagelist_arr as $k => $v){
            $v[‘thumb‘] = ‘/upload/‘.json_decode($v[‘more‘],true)[‘thumbnail‘];
            $v[‘category_id‘] = $this->get_category_id($v[‘id‘]);
            array_push($pagelist,$v);
        }
        $this->assign(‘pagelist‘,$pagelist);    
        $this->assign(‘category‘, $category);
        $this->assign(‘page‘, $page);
        $listTpl = empty($category[‘list_tpl‘]) ? ‘list‘ : $category[‘list_tpl‘];
        return $this->fetch(‘/‘ . $listTpl);
    }
    /*
     * get_category_id 根据文章的id 获取栏目 category_id
     */
    private function get_category_id($id){
        $categoryinfo = Db::name(‘portal_category_post‘)->where(‘post_id‘,‘eq‘,$id)->field(‘category_id‘)->find(); 
        return $categoryinfo[‘category_id‘];
    }
}

具体使用:

<foreach name="pagelist" item="v">
<dl class="caselist">
    <dt class="ab"><a href="{:cmf_url(‘portal/Article/index‘,array(‘id‘=>$v[‘id‘],‘cid‘=>$v[‘category_id‘]))}"><img src="__ROOT__{$v[‘thumb‘]}"  width="285" height="190"></a></dt>
    <dd class="info">
        <a href="{:cmf_url(‘portal/Article/index‘,array(‘id‘=>$v[‘id‘],‘cid‘=>$v[‘category_id‘]))}">{$v[‘post_title‘]}</a>
        <a href="{:cmf_url(‘portal/Article/index‘,array(‘id‘=>$v[‘id‘],‘cid‘=>$v[‘category_id‘]))}">企业官网</a>
    </dd>
</dl>
</foreach> 
<div class="pagination tc">
{$page}
</div>

 

以上是关于thinkCMF----列表页跳转的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SwiftUI 中从一个详情页跳转到另一个详情页并返回列表页?

Android--列表页跳转详情页,动画效果需求之共享元素场景切换动画的实现

Android--列表页跳转详情页,动画效果需求之共享元素场景切换动画的实现

使用session处理用户搜索后数据的上一页和下一页跳转

网页设计中页面默认为第二页,如何用js实现点击上一页跳转到第一页,点击下一页跳转

php分页跳转