我在我的网站上使用 CI Pagination 库,现在将 $config['use_page_numbers'] 设置为 TRUE,当前页面始终是第一个。一切正常,除了这个。
其他设置:
$config['uri_segment'] = 2;
$config['prefix'] = "p";
$route['mypage/p(:num)'] = "citate/index/$1";
这是计算当前页面的函数(输出正确)。当我在第一页时返回 1,在第三页时返回 3,依此类推:
function getPagCurr($offset, $limit){
if( ! $offset) return $page = 1;
else return ($offset/$limit)+1;
}
......虽然,它不工作。
我尝试手动设置,只是为了测试, $config['cur_page'] = 2 的值(所以这意味着第二个链接应该被认为是活动的)但根本没有改变。
CI 版本是最新的。
乐:解决方案
似乎前缀是这里的问题。根据我的实际配置,链接将类似于 www.site.com/mypage/p2,它不起作用。工作链接是 www.site.com/mypage/p/2/,uri_segment = 3 和路由 mypage/p/(:num)。但是,我真的很想拥有第一个链接结构,所以这是我的解决方案(不是一个好的解决方案,因为您必须修改一些系统库代码):
Pagination.php(开始行 166):
// Set current page to 1 if using page numbers instead of offset
if ($this->use_page_numbers AND $this->cur_page == 0)
{
$this->cur_page = $base_page;
}
..变成:
// Set current page to 1 if using page numbers instead of offset
if ($this->use_page_numbers AND $this->cur_page == 0)
{
$current_page = $CI->uri->segment($this->uri_segment); //get pNUM
$current_page = substr($current_page, 1); //remove prefix
$this->cur_page = $current_page; //set current page
}
...现在它起作用了!
如果有人有更好的解决方案,请告诉!谢谢。