簡體   English   中英

'use_page_numbers'時分頁當前頁面不正確

[英]Pagination current page incorrect when 'use_page_numbers'

我在我的網站上使用CI分頁庫,現在將$ 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版本是最新的。


LE:解決方案

似乎前綴是這里的問題。 使用我的實際配置,該鏈接將類似於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
}

...現在可以了!

如果有人有更好的解決方案,請告訴! 謝謝。

是的,您說對了,因為您的細分受眾群獲得了ap(p2),所以它不起作用

為此,您必須修改核心,但是我會說不要修改核心,而只是擴展分頁類並使用以下代碼修改代碼:

添加一個新的類變量

var $use_rsegment       = FALSE;

然后在第157行周圍修改create_links()

//add
$_uri_segment = 'segment';
if($this->use_rsegment){
    $_uri_segment = 'rsegment';
}
//modify
if ($CI->uri->$_uri_segment($this->uri_segment) != $base_page)
{
     $this->cur_page = $CI->uri->$_uri_segment($this->uri_segment);

     // Prep the current page - no funny business!
     $this->cur_page = (int) $this->cur_page;
 }

uri細分是新的路由細分,現在像這樣設置分頁配置

$config['use_rsegment'] = TRUE;
$this->pagination->initialize($config);

因此,您可以在需要時同時使用這兩個選項。 當您將路線設置為true時

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM