#1 jake

好了,下面我们来使用上文的这些分页数据。
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}>
前页 |
上一页 |
<{/if}>

<{foreach from=$pager.all_pages item=thepage}>
        <{if $thepage != $pager.current_page}>
                <{$thepage}>
        <{else}>
                <{$thepage}>
        <{/if}>
<{/foreach}>

<{if $pager.current_page != $pager.last_page}>
|
下一页 |
后页
<{/if}>
<{/if}>
显示的效果是:

thepager1[1].jpg
这里详细说明一下,首先我们是判断是否存在分页数据,在数据记录数小于页面大小的时候,分页数据将不显示。
<{if $pager}>
然后来显示了一些分页的数据:
共有留言<{$pager.total_count}>条,共有<{$pager.total_page}>页(每页<{$pager.page_size}>条留言):
接着使用了判断是否是第一页,是就不会显示“前页”和“上一页”

thepager2[1].jpg
然后是循环显示页码
<{foreach from=$pager.all_pages item=thepage}>
        <{if $thepage != $pager.current_page}>
                <{$thepage}>
        <{else}>
                <{$thepage}>
        <{/if}>
<{/foreach}>

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

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

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

2012-08-04 16:39:23