关于分页的问题

#1 zhgzzy

<{pager pager=$pager myclass="yahoo2" c="网址控制器" a="网址动作" arg1="第一个参数" ...}>
这个如何改为在speedy引擎下的代码:

2010-08-20 13:51:31

#2 zhgzzy

$qid,'pager'=>$pager,'myclass'=>yahoo2)) ?>  这样为什么不行呀

2010-08-20 13:55:34

#3 jake

<{pager}>是Smarty用的函数。在speedy,或者说是PHP内使用,就可以用它的原来的函数,这个pager原来的函数是:__template_pager($params)

$params应该是
$params = array(
'pager' => $pager,
'myclass' => 'yahoo2',
'c' => 'main',
'a' => 'mr',
其他参数
);

2010-08-20 16:22:23

#4 zhgzzy

$thepage,'myclass' => 'yahoo2','c'=>'main','a'=>'mr','qid'=>$qid))?>  这样也不行,输出空白

2010-08-23 15:00:41

#5 jake

首先确定你引入了这个函数的定义文件。

然后

2010-08-23 15:24:16

#6 zhgzzy

确定引入,还是空
这里是不是要改一下???
$this->pager = $guestbook->spPager()->getPager();

2010-08-23 15:30:17

#7 jake

$this->pager = $guestbook->spPager()->getPager();

$thepage,'myclass' => 'yahoo2','c'=>'main','a'=>'mr','qid'=>$qid))?>

这里肯定得相同才行~~~

2010-08-23 20:37:04

#8 zhgzzy

$this->pager = $guestbook->spPager()->getPager();
'main','a'=>'mr','qid'=>$qid,'pager'=>$pager))?> //样式去掉了,我有固定样式
function pagers($params){
        if( !isset($params['pager']) || empty($params['pager']) )return '';
        $args = array();
        foreach( $params as $k => $v )if( !in_array($k, array('c','a','pager','mypage')) )$args[$k] = $v;
        $pagerhandle = isset($params['pager']['mypage']) ? $params['pager']['mypage'] : 'p';
        $html = "";
        $offset = $params['offset'] ? $params['offset'] : 8; // 可以在<{pager}>内用offset=x来调整

        foreach( $params['pager']['all_pages'] as $p ){
                if( $p == $params['pager']['current_page'] ){
                        $html .= "
{$p}
";
                }else{
                        if( ($params['pager']['current_page'] < $offset && $p < $offset ) ||
                                ($params['pager']['current_page'] > $params['pager']['last_page'] - $offset && $p > $params['pager']['last_page'] - $offset ) ||
                                ( $p < $params['pager']['current_page'] + $offset && $p > $params['pager']['current_page'] - $offset )
                         ){
                                $url = spUrl($params['c'], $params['a'], $args + array($pagerhandle => $p));
                                $html .= "
{$p}
";
                        }
                }
        }
        return $html;
}
还有一点问题,请帮我看一下???点上下页时内容没变

2010-08-24 09:51:46

#9 jake

点上下页时内容没变,你要看看页码生成后,下一页的链接中,p这个参数的数值是多少?
有没有加一减一了。

另外,确定程序接收到这个p的参数并进行了分页吗? spPager($this->spArgs('p'), 10)->

2010-08-24 15:51:23

#10 zhgzzy

分页是变了,但是内容没变

2010-08-25 15:28:53

#11 jake

内容没变,那就应该是spPager有没有接收到传入的P参数了,这是控制器端的检查。

2010-08-25 16:59:40

#12 azwl

前面分页中的下面这句是有错的,当get传递的格式不是‘&p=2’这样的形式时出错,得不到页数2
 $pagerhandle = isset($params['pager']['mypage']) ? $params['pager']['mypage'] : 'p';
正确的应该是:
 $pagerhandle = isset($params['mypage']) ? $params['mypage'] : 'p';

2010-08-25 19:53:10