2011-05-11 4 views
1

내가 물어 보려는 내용이 가능한지 아닌지 확실하지 않습니다. 아마도 생각하지는 않지만 어쨌든 물어볼 것이라고 생각했습니다.코드 점화기 정렬 옵션이있는 페이지 매기기

페이지 매김을 재설정하는 방법이 있습니까?

페이징 및 정렬 옵션이있는 페이지가 있습니다. 모든 것이 잘 작동하지만 정렬 옵션 중 하나가 변경되면 사용자를 첫 번째 페이지로 다시 보내고 싶습니다.

는 (나는이 일을 해요 방법은 당신이 개선을위한 제안 주시기 바랍니다가 있다면 내가 그렇게 원하는 결과를 얻을 수있는 모든 최선의 방법에 있지 확신 해요.)

 $array = explode ("_",$this->uri->segment(4)); 

     if(count($array) > 1){ 
      $search_id = $array[1]; 
      $start = $this->uri->segment(5); 
      $uri_segment = 5; 
     }else{ 
      $start = $this->uri->segment(4); 
      $uri_segment = 4; 
      $search_id = null; 
     } 
$config['per_page'] = $this->settings['PRODUCTS_PER_PAGE']; 

$config['total_rows'] = $this->categories_model->get_num_rows($cat_id , $search_type, $search_data); 

$query = $this->categories_model->get_category_pages($cat_id, $new_limit, $new_sort, $search_id, $start, $this->settings['CATEGORY_ORDER'], $search_type, $search_data, $config['total_rows'])) 

$config['base_url'] = base_url() . 'index.php/categories/view/' . $cat_id ."/" . $search_string ; 

$config['uri_segment'] = $uri_segment; 

//Congig settings for pagination 
$config['full_tag_open'] = '<div id="pagination" style= "clear:both;">'; 
$config['full_tag_close'] = '</div>'; 

//Initialise pagination 
$this->pagination->initialize($config); 
+0

당신이 페이지에 데이터를 표시하는 테이블을 사용하고 있습니까? – Shivaas

+0

아니요 나는 각각의 결과를 반복하고 페이지에 표시하는 것이 아닙니다. – flyersun

+0

테이블에 데이터를 표시하는 것이 좋습니다 (CSS로 스타일 지정, 최종 사용자에게는 테이블처럼 보이지 않습니다!). 그런 다음 jQuery dataTables 플러그인을 사용하여 정렬, 검색, 페이지 매김을 수행합니다. 플러그인은 서버 측 페이지 매김을 지원하므로 코드가 어느 정도 재사용 가능합니다. – Shivaas

답변

3

url.so에 표시되지 않는 컨트롤러에서 기본 정렬을 유지할 수 있습니다. 정렬은 첫 페이지로 돌아 가지 않습니다.

샘플

class Post extends Jewelery_Controller { 

public function __construct() { 
    parent::__construct(); 
    $this->load->model('Prime_model'); 
} 

    public function index($ordr_by = 'post_title', $sortr = 'ASC') { 

    if ($this->uri->segment(6)) { 
    $data['segment'] = $this->uri->segment(6); 
    } else { 
    $data['segment'] = 0; 
    } 

    if ($this->uri->segment(4)) { 
    $ordr_by = $this->uri->segment(4); 
    } 

    if ($this->uri->segment(5)) { 
    $sortr = $this->uri->segment(5); 
    } 

    $data['title'] = 'All Posts'; 
    $this->load->library('pagination'); 
    $config['base_url'] = base_url() . 'admin/post/index/' . $ordr_by . '/' . $sortr; 
    $config['full_tag_open'] = '<div class="pagination"><ul>'; 
    $config['full_tag_close'] = '</ul></div>'; 
    $config['cur_tag_open'] = '<li class="active"><a href="">'; 
    $config['cur_tag_close'] = '</a></li>'; 
    $config['prev_tag_open'] = '<li>'; 
    $config['prev_tag_close'] = '</li>'; 
    $config['next_tag_open'] = '<li>'; 
    $config['next_tag_close'] = '</li>'; 
    $config['num_tag_open'] = '<li>'; 
    $config['num_tag_close'] = '</li>'; 
    $config['uri_segment'] = 6; 
    $config['total_rows'] = $this->db->get('jewel_posts')->num_rows(); 
    $config['per_page'] = 10; 
    $this->pagination->initialize($config); 


    $data['post_info'] = $this->Prime_model->master_join('jewel_posts', 'jewel_jewelry_type', 'jewel_posts.jewelry_type = jewel_jewelry_type.jewelry_type_id', 'left', FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, $ordr_by, $sortr, $config['per_page'], $data['segment']); 
    $this->load->view('admin/header', $data); 
    $this->load->view('admin/post/index'); 
    $this->load->view('admin/footer'); 
}