共计 1312 个字符,预计需要花费 4 分钟才能阅读完成。
在做对 ecshop 二次开发的过程中,难免避免不了手动对一些数据进行读取显示,其中不得不涉及到的就是分页功能,当然我们可以使用第三方的分页类对其进行分页功能的实现,这样的类很多也很杂,笔者在 google 上也尝试过,但终究也没有找到一个喜欢且合适分页类,当然这里也就不多说了。
本文主要是想帮助做 ecshop 二次开发需要用到分页功能开发人员快速的调用 ecshop 自带的分页方法,这样既可以保证分页风格一致而且免去了使用第三方分页类的麻烦,好废话不多说,详见以下的实现步骤:
1. 在模板文件上加上分页功能的显示代码,即 dwt 中引入 lib 库文件
在.dwt 模板文件放分页页码显示的地方加入如下代码即可:<!– #BeginLibraryItem “/library/pages.lbi” –><!– #EndLibraryItem –>
2.PHP 程序读取调用分页函数
在.php(一般是 user.php 或 category.php 之类的文件)程序文件中对应的逻辑判断中加入相关的执行代码
// 分页处理,分页尺寸
$size = 10;
$page = isset($_REQUEST[‘page’]) ? intval($_REQUEST[‘page’]) : 1;
$record_count = $db->getOne(“SELECT COUNT(*) FROM ” .$ecs->table(‘ 需读取的数据表名 ’). ” WHERE 相关判断条件 ”);
$pager = get_pager(‘ 当前 php 文件 ’, array(‘act’ => $action), $record_count, $page, $size);
$ad_user_list = 数据读取函数 ($user_id, $size, $pager[‘start’]);
// 分页数据传给模板
$smarty->assign(‘pager’, $pager);
3. 修改原有的数据读取函数,增加 $num,$start 两个参数的传递和处理,这儿的修改就得根据你自己的数据读取函数自行修改了,函数一般都写在在 lib_transaction.php 文件中
可参考下面简单的例子实现
function 数据读取函数 ($user_id, $num = 10, $start = 0)
{
$sql = “SELECT * FROM ” .$GLOBALS[‘ecs’]->table(‘ 需读取的数据表名 ’). ” WHERE 相关判断条件 ”;
$arr = array();
$res = $GLOBALS[‘db’]->SelectLimit($sql, $num, $start);
while ($row = $GLOBALS[‘db’]->fetchRow($res))
{
$arr[] = array(‘user_id’ => $row[‘user_id’],
‘user_name’ => $row[‘user_name’],
‘valid_order’ => $row[‘valid_order’],
‘end_time’ => $row[‘end_time’]);
}
return $arr;
}
4.OK 结束,现在可以测试一下读取的数据是否有了分页功能了,其实 ecshop 分页就这么简单的
最后实现的分页效果如下: