Thực hiện các thay đổi sau trong lớp Phân trang (/system/libraries/Pagination.php) để nó sử dụng số trang thay vì bù trừ.
OLD (dòng 146-153):
if ($CI->uri->segment($this->uri_segment) != 0)
{
$this->cur_page = $CI->uri->segment($this->uri_segment);
// Prep the current page - no funny business!
$this->cur_page = (int) $this->cur_page;
}
MỚI:
Add ‘khác’ tùy chọn để if-tuyên bố để đảm bảo mặc định là; page = 1.
if ($CI->uri->segment($this->uri_segment) != 0)
{
$this->cur_page = $CI->uri->segment($this->uri_segment);
// Prep the current page - no funny business!
$this->cur_page = (int) $this->cur_page;
}
else
{
$this->cur_page = 1;
}
OLD (dòng 175):
$this->cur_page = floor(($this->cur_page/$this->per_page) + 1);
MỚI:
Đơn giản chỉ cần nhận xét ra dòng này để trang hiện tuân theo điều khiển/URI.
//$this->cur_page = floor(($this->cur_page/$this->per_page) + 1);
OLD (dòng 206):
$i = $uri_page_number - $this->per_page;
MỚI:
Trang trước nên luôn luôn được trang hiện trừ bằng 1.
$i = $uri_page_number - 1;
OLD (Dòng 230):
if ($this->cur_page == $loop)
MỚI:
URI thiếu pagination nên được xem xét trang 1.
if ($this->cur_page == $loop || ($this->cur_page == 1 && $this->cur_page == $loop))
OLD (dòng 238-247):
if ($n == '' && $this->first_url != '')
{
$output .= $this->num_tag_open.'<a '.$this->anchor_class.'href="'.$this->first_url.'">'.$loop.'</a>'.$this->num_tag_close;
}
else
{
$n = ($n == '') ? '' : $this->prefix.$n.$this->suffix;
$output .= $this->num_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$n.'">'.$loop.'</a>'.$this->num_tag_close;
}
MỚI:
URL trang nên sử dụng số trang và không offsets.
if ($n == '' && $this->first_url != '')
{
$output .= $this->num_tag_open.'<a '.$this->anchor_class.'href="'.$loop.'">'.$loop.'</a>'.$this->num_tag_close;
}
else
{
$n = ($n == '') ? '' : $this->prefix.$n.$this->suffix;
$output .= $this->num_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$loop.'">'.$loop.'</a>'.$this->num_tag_close;
}
OLD (dòng 256):
$output .= $this->next_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$this->prefix.($this->cur_page * $this->per_page).$this->suffix.'">'.$this->next_link.'</a>'.$this->next_tag_close;
MỚI:
Trang tiếp theo nên luôn luôn là tổng của trang hiện tại và 1.
$output .= $this->next_tag_open.'<a '.$this->anchor_class.'href="'.$this->base_url.$this->prefix.($this->cur_page + 1).$this->suffix.'">'.$this->next_link.'</a>'.$this->next_tag_close;
OLD (dòng 262):
$i = (($num_pages * $this->per_page) - $this->per_page);
MỚI:
Trang cuối nên là tổng số trang.
$i = $num_pages;
Thay thế tất cả các dòng cũ bằng dòng mới. Đảm bảo bạn sao lưu tệp trước khi thay đổi.
Hope this helps :)
EDIT:
Bạn cần cập nhật thử nghiệm chức năng điều khiển của bạn như:
function test($start_from = 0)
{
$this->load->library('pagination');
$data = array();
$per_page = 3;
$total = $this->activity_model->count_by();
$config['base_url'] = base_url() . 'test';
$config['total_rows'] = $total;
$config['per_page'] = $per_page;
$config['uri_segment'] = 2;
$config['num_links'] = 2;
$config['use_page_numbers'] = TRUE;
$start = $per_page * ($start_from-1);
$data['follow'] = $this->activity_model->get($per_page, $start);
$this->pagination->initialize($config);
$data['pagination'] = $this->pagination->create_links();
$this->load->view('front_end/test' ,$data);
}
Ở đây tôi đã thêm một $ bắt đầu biến mới đó là $per_page * ($start_from-1)
. Bây giờ vượt qua $ start này làm đối số cho mô hình.
Điều này làm nhân số mục trên mỗi trang với (số trang hiện tại -1). Điều này có nghĩa là nếu các mục của bạn trên mỗi trang là 10
và bạn đang ở trang thứ hai là $start = 10 *(2-1)
, cung cấp 10
. Vì vậy, kết quả của bạn sẽ bắt đầu từ 10,20 và như vậy một
Hope this helps :)
này sẽ đi cho CodeIgniter 2.0.3? Dù sao thì cũng cám ơn bạn ! – Viktors
Sẽ có một số thay đổi nhỏ trong số dòng. Bất kỳ cách nào cho nó một thử. Mỏ là một phiên bản cũ. Xin vui lòng cho tôi biết nếu nó hoạt động :) – Sabari
Điều này làm việc cho bạn? – Sabari