迅睿列表页分页,我踩过的三个参数坑
摘要
列表页分页做不出来,最典型的表现是:第一页正常,点第 2 页还是第一页的内容,或者干脆 404。我连着遇到三回,每次原因都不一样,记一下。 page 参数没传进标签里 迅睿的分页标签长这样(我按记忆写的,参数顺序以你版本实际为准): {dr
列表页分页做不出来,最典型的表现是:第一页正常,点第 2 页还是第一页的内容,或者干脆 404。我连着遇到三回,每次原因都不一样,记一下。
page 参数没传进标签里
迅睿的分页标签长这样(我按记忆写的,参数顺序以你版本实际为准):
{dr_page page=$page url="/list/{catid}/{page}.html"}
关键是 page=$page 这一段。控制器里得先把当前页码拿出来赋给模板变量,不然标签永远按第 1 页算。我当时漏了这句,表现就是「页码跳了,内容没动」。
控制器里大概是这个意思:
$page = (int) $this->input->get( 'page' );
$page = $page > 0 ? $page : 1;
$this->template->assign( 'page', $page );
方法名和写法我不敢保证百分百准,迅睿不同版本改动不小,建议对着你自己项目里的控制器抄,别直接粘我这段。
伪静态规则里没有 {page} 这一段
分页地址如果配成 /list/1/2.html 这种形式,nginx 侧必须有一条能匹配的规则。少了它,所有分页 URL 都落到列表首页,看起来像「分页失效」,其实是被重写吃掉了。
这条我很确定:URL 里出现几个层级,rewrite 规则就得写几个占位。少一层都不行。
总数不对,页码就崩
分页标签算总页数靠的是一个 total 值。如果你的筛选条件(比如某个字段等于某个值)写在了控制器里,而 total 查询没带上同样的条件,页码会出现「总共 50 页,点到第 3 页就空」。
这类问题不好描述,只能说:列表查询和计数查询,条件必须一致。我上次就是列表加了 where,count 忘了加。
排查时最直接的办法是在模板里把 total 打出来:
total = {$total}
数字跟你心里预期差得离谱,问题就在查询条件,不在分页标签。
2026年10月20日 17:19
前后30天 · 点日期看归档
9月20日
9月21日
9月22日
9月23日
9月24日
9月25日
9月26日
9月27日
9月28日
9月29日
9月30日
10月1日
10月2日
10月3日
10月4日
10月5日
10月6日
10月7日
10月8日
10月9日
10月10日
10月11日
10月12日
10月13日
10月14日
10月15日
10月16日
10月17日
10月18日
10月19日
10月20日
10月21日
10月22日
10月23日
10月24日
10月25日
10月26日
10月27日
10月28日
10月29日
10月30日
10月31日
11月1日
11月2日
11月3日
11月4日
11月5日
11月6日
11月7日
11月8日
11月9日
11月10日
11月11日
11月12日
11月13日
11月14日
11月15日
11月16日
11月17日
11月18日
11月19日