제목 | 커스텀 페이지네이션 라이브러리 | ||
---|---|---|---|
글쓴이 | 슘님 | 작성시각 | 2014/06/16 17:13:10 |
|
|||
불의회상님이 패치하신 고정형 페이지네이션 라이브러리를 참고하여 몇 가지 옵션을 추가하였습니다. (덤으로 약간의 버그 수정...^^;) // 사용 예 (기존의 pagination과 동일하여 필요할 경우 아래의 옵션만 추가해주면 됩니다. $config['display_always'] = TRUE; $config['use_fixed_page'] = TRUE; $config['fixed_page_num'] = 10; $config['display_first_always'] = FALSE; $config['display_first_always'] = FALSE; $config['disable_first_link'] = TRUE; $config['disable_last_link'] = TRUE; $config['display_prev_always'] = TRUE; $config['display_next_always'] = TRUE; $config['disable_prev_link'] = TRUE; $config['disable_next_link'] = TRUE;* 기존 라이브러리와의 호환을 위해 추가된 옵션의 default value는 display_first_always, display_last_always만 TRUE고 그 외에는 모두 FALSE로 설정되어 있습니다. - display_always : page가 하나더라도 페이지네이션을 보여줍니다. (기존에는 보여주지 않음) - use_fixed_page : 항상 고정된 수만큼 페이지를 보여줍니다. fixed_page_num와 연동됩니다. e.g. $config['fixed_page_num'] = 10; 으로 설정하면 항상 페이지를 10개씩 보여줍니다. 즉, First < 1 2 3 4 5 6 7 8 9 10 > Last (fixed_page_num보다 전체 페이지수가 작을 경우 전체 페이지수만큼만 보여줍니다.) - disable_first_link : TRUE로 설정 시 현재 페이지가 첫 페이지라면 first 링크를 비활성화 시킵니다. * 만약 링크 비활성화에 대한 CSS를 사용하신다면 disabled_first_tag_open, disabled_first_tag_close 옵션을 사용하세요. $config['disabled_first_tag_open'] = "<div class='btn-pagination inactive'>"; $config['disabled_first_tag_close'] = "</div>"; * 만약 first 링크를 숨기고 싶다면 $config['first_link'] = FALSE; 로 설정하세요. - disable_last_link : TRUE로 설정 시 현재 페이지가 마지막 페이지라면 last 링크를 비활성화 시킵니다. * 만약 링크 비활성화에 대한 CSS를 사용하신다면 disabled_last_tag_open, disabled_last_tag_close 옵션을 사용하세요. * 만약 last 링크를 숨기고 싶다면 $config['last_link'] = FALSE; 로 설정하세요. - display_first_always : FALSE로 설정 시 현재 페이지가 첫 페이지일 경우 first 링크를 보여주지 않습니다. (기존에는 first 링크를 항상 보여줍니다.) - display_last_always : TRUE로 설정 시 현재 페이지가 마지막 페이지일 경우 last 링크를 보여주지 않습니다. (기존에는 last 링크를 항상 보여줍니다.) - disable_prev_link : TRUE로 설정 시 현재페이지가 첫 페이지라면 first 링크를 비활성화 시킵니다. * 만약 링크 비활성화에 대한 CSS를 사용하신다면 disabled_prev_tag_open, disabled_prev_tag_close 옵션을 사용하세요. - disable_next_link : TRUE로 설정 시 현재페이지가 첫 페이지라면 last 링크를 비활성화 시킵니다. * 만약 링크 비활성화에 대한 CSS를 사용하신다면 disabled_next_tag_open, disabled_next_tag_close 옵션을 사용하세요. - display_prev_always : TRUE로 설정 시 현재 페이지가 첫 페이지라도 prev 링크를 보여줍니다. (기존에는 현재 페이지가 첫 페이지인 경우 prev 링크를 보여주지 않습니다.) - display_next_always : TRUE로 설정 시 현재 페이지가 마지막 페이지라도 next 링크를 보여줍니다. (기존에는 현재 페이지가 마지막 페이지인 경우 next 링크를 보여주지 않습니다.) |
|||
태그 | pagination,페이징,페이지네이션 | ||
첨부파일 |
MY_Pagination.zip (2.4 KB) |
||
다음글 | ci 3.0 pagination fixed num_li... (4) | ||
이전글 | Elastic Search엔진 CI 라이브러리 입니다. (4) | ||
변종원(웅파)
/
2014/06/16 17:30:44 /
추천
0
|
한대승(불의회상)
/
2014/06/17 09:22:42 /
추천
0
슘님// 수고 하셨습니다. ^^
|
darkninja
/
2014/06/27 12:52:47 /
추천
0
/**
* Constructor * * @param array $params Initialization parameters * @return void */ public function __construct($params = array()) { parent::__construct($params); // pagination config 설정을 적용함. // 생성자에게 정보를 전달하지 않으면 아래 변수를 설정. //$this->use_page_numbers = TRUE; // Use page number for segment instead of offset } OTL 왜 안되지 왜 다들 말이 없을까 왜 또 까먹었을까 쩝 |
lzao
/
2014/06/30 10:22:27 /
추천
0
$config['use_fixed_page'] = TRUE;
$config['fixed_page_num'] = 10;
를 사용하고 싶은데 그냥 선언만 해서는 안되나요? |
슘님
/
2014/06/30 10:29:10 /
추천
0
lzao// $config['display_always'] = TRUE; 도 선언해 보세요.
CI 페이지네이션은 페이지가 1개일 경우 페이지 링크를 생성하지 않습니다. 위의 옵션은 페이지가 1개이더라도 무조건 페이지 링크를 보여주는 옵션입니다. |
lzao
/
2014/06/30 10:35:08 /
추천
0
$this->load->library('pagination');
$config['base_url'] = $data['url']; $config['total_rows'] = $data['num']; if (isset($_POST['limit']) && $_POST['limit'] != "" ) { $config['per_page'] = $_POST['limit']; } else { $config['per_page'] = 10; } $config['uri_segment'] = 4; // $config['num_links'] = 5; $config['display_always'] = TRUE; $config['display_always'] = TRUE; $config['use_fixed_page'] = TRUE; $config['fixed_page_num'] = 10; $config['next_link'] = '다음'; $config['prev_link'] = '이전'; $config['full_tag_open'] = '<div id="pagination">'; $config['full_tag_close'] = '</div>'; $config['anchor_class'] = 'class="last"'; $config['last_link'] = FALSE; $config['first_link'] = FALSE; $config['use_page_numbers'] = TRUE; $this->pagination->initialize($config); $data['page_str'] = $this->pagination->create_links(); $page = $this->uri->segment(4,1); if (@$_POST['page1']) { $page = $_POST['page1']; } else { $page = 1; } if ($page < 1) { $page = 1; } $data['page'] = $page; if (isset($_POST['limit']) && $_POST['limit'] != "" ) { $param['limit'] = $_POST['limit']; $data['per_page'] = $_POST['limit']; } else { $param['limit'] = $config['per_page']; $data['per_page'] = $config['per_page']; } if ($page > 1) { $param['start'] = (($page/$config['per_page'])) * $config['per_page']; } else { $param['start'] = ($page - 1) * $config['per_page']; } 이런식으로 페이지네이션 부분을 선언해줬는데 안되네요... 따로 업데이트나 그런게 필요한가요? |
슘님
/
2014/06/30 10:43:34 /
추천
0
lzao//
혹시 제가 업로드한 MY_Pagination.php파일을 $CI_PATH/$APP_PATH/libraries 폴더에 복사하셨는지요? config.php에서 확장 코어/라이브러리/헬퍼 등의 subclass_prefix 설정은 잘 맞춰 주셨는지요? (어떤 상황인지 정확히 몰라 질문 드립니다. 라이브러리 파일만 복사하면 별다른 설정은 불필요하거든요.) |
lzao
/
2014/06/30 10:50:42 /
추천
0
파일을 못보고 그냥 선언만 했네요 됩니다 ^^ 감사합니다
|
darkninja
/
2014/06/30 11:55:48 /
추천
0
public function __construct($params = array()) { if (count($params) > 0) { $this->initialize($params); // 설정을 변수로 추가함. } if ($this->anchor_class != '') { $this->anchor_class = 'class="'.$this->anchor_class.'" '; } log_message('debug', "Pagination Class Initialized"); } application/config/Pagination.php <= 페이지네이션 기본 설정은 여기에 해두시면 페이지네이션 로드할때 위에 생성자부분에서 자동으로 읽어들입니다. |
포럼이 바람직한 방향으로 잘 가고 있어요. ^_______^