原文地址:Ecshop后台分页原理详解作者:Tomener
今天仿照后台评论列表来研究了一下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显示的,如下:
..................................................................................................
模板是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后台分页原理详细解释
comment_manage.php
//-- 获取没有回复的评论列表
if ($_REQUEST['act'] == 'list')
{
}
//-- 翻页、搜索、排序
if ($_REQUEST['act'] == 'query')
{
}
一般都有一个获取数据的方法,这里是get_comment_list()
这个里面我们讲讲 page_and_size这个方法
通过这个方法获取:page_size,page,page_count,start
其中,page就是当前第几页,start是用于查询语句里面limit限制的 limit start page_size(示范代码)
我就是主要讲讲,filter,我们称之为过滤器,这个其实就是模板页面下面js显示的,如下:
listTable.filter.keywords =
'0';
这些会在listtable.js里面listTable.compileFilter方法作用下,生成如:keywords=0&sort_by=add_time这样的形式,通过POST方法发送给if
($_REQUEST['act'] == 'query')所以,我们可以用$_REQUEST['keywords']来获得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';
..................................................................................................
模板是comment_list.htm
要说的是js
{insert_scripts files="../js/utils.js,listtable.js"}
listTable就是实现翻页的脚本
绿色虚线框里面是必须写的,现在之后就是上面蓝色框里面的内容
模板里面还要主要的就是{if $full_page},不要忘写了,参考comment_list.htm
Ecshop后台分页规则 Ecshop后台分页原理 Ecshop后台分页代码详解 Ecshop后台分页原理详解
Ecshop后台分页原理详细解释