|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
当然你可以把你最基本的功能放出来的时候就放出来,比如放到论坛上,让大家都参与, Smarty中的分页有良多办法。
1。利用Smarty的分页插件,如Pager,pagnition,sliding_page等,不外感到都不是太好,几近都有一些Bug。
有乐趣试用和本人去改善的伴侣可以看看:
http://smarty.php.net/contribs/plugins/view.php/function.pager.php
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=2327
http://www.phpinsider.com/smarty-forum/viewtopic.php?t=1604
2。利用分页类库,呵呵,这个网上就太多了,一大把,不外我还没有发明写得很好的,出格是轻易扩大的。
在搜刮的时分还看到一个号称分页类终结者的,哈哈,有点可笑。分页类中把SQL都包括出来了,这个是相对不克不及容忍的,可以说作者对OO的熟悉还对照浅。
不外分页类库纷歧定合适Smarty,出格是当纪录集数据是二维数组时,我不想保持Smarty便利的Section。这是我没有效PEAR::Pager的缘由,不然还要先对数组停止处置,也很费事。
3。本人写啦。。我临时没有选择写成类库,不外改写很轻易,上面次要讲讲思绪。
其实Smarty的分页十分复杂,起首咱们可以在模板中如许完成:
{$pager_Links}
{section name="list" loop=$productID start=0 max=$pager_Total step=1}
{if ($smarty.section.list.index >= $pager_StartNum )&& ($smarty.section.list.index <= $pager_EndNum )}
产物称号:{$productName
[list]}
产物种别:{$catalogName
[list]}
{/if}
{/section}
以上就能够将一个纪录集(二维数组)轻松地打印出来,并且限制每页的显示局限。
{$pager_Links} 分页标签(就是上一页,下一页等)
max=$pager_Total 纪录总数
$smarty.section.list.index >= $pager_StartNum )&& ($smarty.section.list.index <= $pager_EndNum )
这一行是用来限制纪录的显示局限的,假如纪录的索引落在这个局限以内就显示出来,不然就不显示。
以上可以看出,在PHP文件中,咱们只需求传递4个变量给Smarty对象:
1.纪录总数
2.每页纪录肇端数
3.每页纪录停止数
4.分页标签
以下代码代参考:
标签可以本人去写了,可以扩大成更壮大的。如今我没有工夫,否则会写一个
<?php
$smartyArr = $smarty->get_template_vars();
//纪录总数,每页显示纪录条数,总页数
$pager_Total = count($smartyArr['productID']);
$pager_Size = 10;
$pager_Number = ceil($pager_Total/$pager_Size);
$pager_URL = "index.php?action=View";
//以后页的页数,从REQUEST取得
if(isset($_GET['pager_PageID'])&& !empty($_GET['pager_PageID'])){
$pager_PageID = intval($_GET['pager_PageID']);
}else{
//第一次会见
$pager_PageID = 1;
}
//每页的起,始纪录数
if ($pager_PageID == 1 ) {
$pager_StartNum = 0;
} else {
$pager_StartNum = ($pager_PageID -1) * $pager_Size;
}
$pager_EndNum = $pager_StartNum + $pager_Size;
if ($pager_PageID == 1 && $pager_Number>1) {
//第一页
$pager_Links = "上一页 | <a href=".$pager_URL."&pager_PageID=".($pager_PageID+1).">下一页</a>";
} elseif($pager_PageID == $pager_Number && $pager_Number>1) {
//最初一页
$pager_Links = "<a href=".$pager_URL."&pager_PageID=".($pager_PageID-1).">上一页</a> | 下一页";
} elseif ($pager_PageID > 1 && $pager_PageID <= $pager_Number) {
//两头
$pager_Links = "<a href=".$pager_URL."&pager_PageID=".($pager_PageID-1).">上一页</a> | <a href=".$pager_URL."&pager_PageID=".($pager_PageID+1).">下一页</a>";
} else {
$pager_Links = "上一页 | 下一页";
}
$smarty->assign('pager_Total',$pager_Total);
$smarty->assign('pager_StartNum',$pager_StartNum);
$smarty->assign('pager_EndNum',$pager_EndNum);
$smarty->assign('pager_Links',$pager_Links);
return $smarty->fetch ("list.tpl");
?>开发相册系统过程中就有过这样的问题,因为没有交流好,出现重复工作问题,因为文档没有详细的说明而经常临时问对方。 |
|