zoukankan      html  css  js  c++  java
  • [转载]Ecshop后台分页原理详解

    今天仿照后台评论列表来研究了一下Ecshop后台的分页功能,取得成功!
    comment_manage.php

    //-- 获取没有回复的评论列表

    if ($_REQUEST['act'] == 'list')
    {
       
        admin_priv('comment_priv');

        $smarty->assign('ur_here',      $_LANG['05_comment_manage']);
        $smarty->assign('full_page',    1);

        $list = get_comment_list();

        $smarty->assign('comment_list', $list['item']);
        $smarty->assign('filter',       $list['filter']);
        $smarty->assign('record_count', $list['record_count']);
        $smarty->assign('page_count',   $list['page_count']);

        $sort_flag  = sort_flag($list['filter']);
        $smarty->assign($sort_flag['tag'], $sort_flag['img']);

        assign_query_info();
        $smarty->display('comment_list.htm');
    }


    //-- 翻页、搜索、排序

    if ($_REQUEST['act'] == 'query')
    {
        $list = get_comment_list();

        $smarty->assign('comment_list', $list['item']);
        $smarty->assign('filter',       $list['filter']);
        $smarty->assign('record_count', $list['record_count']);
        $smarty->assign('page_count',   $list['page_count']);

        $sort_flag  = sort_flag($list['filter']);
        $smarty->assign($sort_flag['tag'], $sort_flag['img']);

        make_json_result($smarty->fetch('comment_list.htm'), '',
            array('filter' => $list['filter'], 'page_count' => $list['page_count']));
    }
    一般都有一个获取数据的方法,这里是get_comment_list()
    这个里面我们讲讲 page_and_size这个方法
        $filter['record_count'] = $GLOBALS['db']->getOne($sql);
       
        $filter = page_and_size($filter);


    通过这个方法获取:page_size,page,page_count,start
    其中,page就是当前第几页,start是用于查询语句里面limit限制的 limit start page_size(示范代码)

    我就是主要讲讲,filter,我们称之为过滤器,这个其实就是模板页面下面js显示的,如下:
    listTable.filter.keywords = '0';
    listTable.filter.sort_by = 'add_time';
    listTable.filter.sort_order = 'DESC';
    listTable.filter.record_count = '19732';
    listTable.filter.page_size = '15';
    listTable.filter.page = '1';
    listTable.filter.page_count = '1316';
    listTable.filter.start = '0';
    这些会在listtable.js里面listTable.compileFilter方法作用下,生成如:keywords=0&sort_by=add_time这样的形式,通过POST方法发送给if ($_REQUEST['act'] == 'query')所以,我们可以用$_REQUEST['keywords']来获得
    ..................................................................................................
    模板是comment_list.htm
    要说的是js
    {insert_scripts files="../js/utils.js,listtable.js"}
    listTable就是实现翻页的脚本

      listTable.recordCount = {$record_count};
      listTable.pageCount = {$page_count};
     
      {foreach from=$filter item=item key=key}
      listTable.filter.{$key} = '{$item}';
      {/foreach}

    绿色虚线框里面是必须写的,现在之后就是上面蓝色框里面的内容

    模板里面还要主要的就是{if $full_page},不要忘写了,参考comment_list.htm

    Ecshop后台分页规则 Ecshop后台分页原理 Ecshop后台分页代码详解 Ecshop后台分页原理详解
    Ecshop后台分页原理详细解释
  • 相关阅读:
    静态方法、类方法和属性方法
    类的私有属性和私有方法
    JMeter-正则表达式(取出银行卡号后4位)
    JMeter连接MySQL数据库
    解决chrome提示您的连接不是私密连接的方法
    python安装appium模块
    mac中的word内容丢失
    有些事一旦开始就停不下来了
    Python接口测试-以&连接拼接字典数据(get中url请求数据)
    Python接口测试-模块引用与映射
  • 原文地址:https://www.cnblogs.com/Zhuangsd/p/5655365.html
Copyright © 2011-2022 走看看