thinkCMF—-列表页跳转

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']}" alt="" 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>

 

转载于:https://www.cnblogs.com/e0yu/p/9540734.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101467.html原文链接:https://javaforall.net

(0)
上一篇 2021年6月11日 下午2:00
下一篇 2021年6月11日 下午3:00


相关推荐

  • selenium面试题总结——测试经验分享

    selenium面试题总结——测试经验分享selenium上传文件操作,需要被操作对象的type属性是什么?

    2022年6月20日
    45
  • Java 匿名类(匿名内部类)

    Java 匿名类(匿名内部类)Java 匿名类 匿名内部类 学习的参考博文 无恨之都 1 初识匿名类标准说法 内部类包括 成员类 局部类 匿名类 匿名内部类 匿名类概念 匿名类可以使你的代码更加简洁 JDK8 之后 Lambda 更简洁 你可以定义一个类的同时对其实例化 它与局部类很相似 不同的是它没有类名 如果某个局部类你只需要使用一次 就可以使用匿名类 匿名类是表达式 而非常规的类匿名类的使用场景 一个局部类只需要使用一次的时候 2 通过示例分析局部类和匿名类区别 publicclassH

    2026年3月19日
    4
  • W3C推荐的新布局模式 【CSS Flex布局】详解

    W3C推荐的新布局模式 【CSS Flex布局】详解介绍了 W3C 推荐的新布局模式 CSSflexbox 布局

    2026年3月17日
    2
  • 对数函数定义域和值域_对数函数定义域和值域 [对数函数的定义域和值域对数函数的定义域和值域]…

    对数函数定义域和值域_对数函数定义域和值域 [对数函数的定义域和值域对数函数的定义域和值域]…摘要 对数函数 特别是对数复合函数的定义域以及值域 由于它牵涉的知识点比较多 在中学数学教学中占有相当重要的地位 笔者根据平时教学经验的积累 总结了一些关于对数函数的定义域和值域的问题 与同行切磋 关键词 定义域 值域 对数函数一 简单对数函数的定义域和值域的实用判别法则设 y logax a gt 0 a 1 为简单对数函数 则有如下判别法则 1 当 a gt 1 函数 y logax 在定义域

    2026年3月19日
    2
  • getchar的使用

    1.从缓冲区读走一个字符,相当于清除缓冲区2.前面的scanf()在读取输入时会在缓冲区中留下一个字符’\n’(输入完s[i]的值后按回车键所致),所以如果不在此加一个getchar()把这个回车符取走的话,gets()就不会等待从键盘键入字符,而是会直接取走这个“无用的”回车符,从而导致读取有误3.getchar()是在输入缓冲区顺序读入一个字符(包括空格、回车和…

    2022年4月5日
    107
  • 解决$.ajax()请求异常~ jQuery提示parsererror错误解决办法

    解决$.ajax()请求异常~ jQuery提示parsererror错误解决办法在前端通过ajax请求后台之后返回的时候,出现了下面的异常:error:function(req,textStatus,errorThrown){}req:textStatus:”parsererror”;errorThrown:undefined.而自己的ajax请求如下:type:’POST’,contentType:’application/j…

    2022年6月26日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号