您的位置:首页 > 运维架构

Ecshop后台分页原理详解

2013-01-24 16:36 288 查看

今天仿照后台评论列表来研究了一下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后台分页原理详细解释

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: