手册 >> 数据操作 >> 模板中分页

模板中分页

 

好了,下面我们来使用上文的这些分页数据。

 

Array
(
    [total_count] => 13  // 数据总记录
    [page_size] => 5    // 每页多少条记录
	[total_page] => 3    // 总页数
    [first_page] => 1     // 第一页的页码
    [prev_page] => 1     // 上一页的页码
    [next_page] => 2     // 下一页的页码
    [last_page] => 3      // 最后一页的页码
    [current_page] => 1   // 当前页码
    [all_pages] => Array   // 页码数据,这里是全部的页码
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )
)

刚才我们已经将分页数据输入到$this->pager上面去了。我们在smarty模板中:

<{if $pager}>
共有留言<{$pager.total_count}>条,共有<{$pager.total_page}>页(每页<{$pager.page_size}>条留言):
<!--在当前页不是第一页的时候,显示前页和上一页-->
<{if $pager.current_page != $pager.first_page}>
<a href="<{spUrl c=main a=index page=$pager.first_page}>">前页</a> | 
<a href="<{spUrl c=main a=index page=$pager.prev_page}>">上一页</a> | 
<{/if}>
<!--开始循环页码,同时如果循环到当前页则不显示链接-->
<{foreach from=$pager.all_pages item=thepage}>
	<{if $thepage != $pager.current_page}>
		<a href="<{spUrl c=main a=index page=$thepage}>"><{$thepage}></a>
	<{else}>
		<b><{$thepage}></b>
	<{/if}>
<{/foreach}>
<!--在当前页不是最后一页的时候,显示下一页和后页-->
<{if $pager.current_page != $pager.last_page}>
 | 
<a href="<{spUrl c=main a=index page=$pager.next_page}>">下一页</a> | 
<a href="<{spUrl c=main a=index page=$pager.last_page}>">后页</a>
<{/if}>
<{/if}>

显示的效果是:

这里详细说明一下,首先我们是判断是否存在分页数据,在数据记录数小于页面大小的时候,分页数据将不显示。

<{if $pager}>

然后来显示了一些分页的数据:

共有留言<{$pager.total_count}>条,共有<{$pager.total_page}>页(每页<{$pager.page_size}>条留言):

接着使用了判断是否是第一页,是就不会显示“前页”和“上一页”

然后是循环显示页码

<{foreach from=$pager.all_pages item=thepage}>
	<{if $thepage != $pager.current_page}>
		<a href="<{spUrl c=main a=index page=$thepage}>"><{$thepage}></a>
	<{else}>
		<b><{$thepage}></b>
	<{/if}>
<{/foreach}>

请注意这里的spUrl的写法,<{spUrl c=main a=index page=$thepage}> 最后的page是输入到程序中的页码,它将被程序中的$this->spArgs('page', 1)获取。

最后是判断当前是否最后一页,不是的话,将显示“下一页”和“后页”

这里我们看到了SpeedPHP的spPager分页程序的使用方法。在实际应用中,因为页面数据是经常会将这些smarty的显示作为标准的格式,在许多地方都能够重复地使用,极大提供开发效率。