페이지네이션 Pagination Class
CodeIgniter의 페이지네이션 클래스는 매우 사용하기 쉽답니다. 100% 커스터마이징 가능합니다. 커스터마이징은 동적으로 할수도 있고, 설정을 저장할수도 있습니다.
"페이지네이션" 이라는 말에 익숙하지 않으신가요 ? 바로 아래와같이 페이지 이동을위한 링크를 뜻하는 말이랍니다:
« First < 1 2 3 4 5 > Last »
예제 Example
컨트롤러 함수내에서 어떻게 페이지를 생성하는지 보여주는 예제입니다:
$this->load->library('pagination');
$config['base_url'] = 'http://example.com/index.php/test/page/';
$config['total_rows'] = 200;
$config['per_page'] = 20;
$this->pagination->initialize($config);
echo $this->pagination->create_links();
참고:
$config 배열에는 설정값들이 들어갑니다. 위와 같이 그배열을 $this->pagination->initialize 함수에 넘겨줍니다. 20개정도의 설정 아이템들이 있지만, 위에서 보여준것은 그중에서 반드시 필요한 세가지 입니다. 아래는 각 아이템에대한 설명입니다:
- base_url 페이지네이션에 포함될 컨트롤러/함수 의 전체 url 입니다.위의 예제에서,컨트롤러는"Test" 이고 함수는 "page" 입니다. url을 다른 구조로 하고싶다면 url 라우팅 변경(re-route your URI) 을 이용하실수 있습니다.
- total_rows 페이지네이션할 전체 레코드의 수를 나타냅니다. 통상적이로 이숫자는 데이터베이스 쿼리에서 리턴되는 전체열수 입니다.
- per_page 한페이지에 보여질 아이템(열)수 입니다.위의 예제에서는 20 개의 아이템이 한페이지에 보여집니다.
보여줄 페이지네이션이 없을경우create_links() 함수는 빈 문자열을 리턴합니다.
설정을 설정파일에 저장하기 Setting preferences in a config file
설정을 위처럼 하지않고, 설정파일에 저장할수도 있습니다.pagination.php 파일을 만든후 $config 배열을 추가하세요. 그런후 파일을 config/pagination.php 에 저장하시면, 자동으로 불러지게 됩니다.설정파일로 저장하면 $this->pagination->initialize 함수를 호출할 필요가 없습니다.
페이지네이션 커스터마이징 하기 Customizing the Pagination
아래는 페이지네이션이 어떻게 보여질지에 대한 설정(preferences) 목록입니다.
$config['uri_segment'] = 3;
페이지네이션 함수는 페이지 번호를 URI 세그먼트의 어느부분에 포함시킬지 자동으로 결정합니다. 여러분이 직접 지정하고싶으면 위 설정을 사용합니다.
$config['num_links'] = 2;
선택된 페이지번호 좌우로 몇개의 숫자링크를 보여줄지 설정합니다. 예를들어, 2 는 본 페이지의 맨위에있는 예제와 같이 양쪽에 2개의 숫자링크를 보여줍니다.(즉 숫자는 5개가 되겠죠 )
$config['use_page_numbers'] = TRUE;
기본값으로, URI 세그먼트는 페이징하는 아이템들의 시작 인덱스를 사용합니다.(역주:무슨소리인지 잘 모르겠네요.사용해 보면 아는데 시간이 없어서 ... 죄송).실제 페이지 번호를 보여주고 싶다면, TRUE로 설정하세요.
$config['page_query_string'] = TRUE
기본값으로, 페이지네이션 라이브러리는 여러분이 URI세그먼트(Segments)를 사용한다고 가정합니다. 그리고 링크를 아래처럼 생성합니다.
http://example.com/index.php/test/page/20
$config['enable_query_strings'] 을 TRUE 로 설정하면, 링크는 자동으로 쿼리스트링(Query Strings) 형식으로 바뀝니다. 이 옵션은 명시적으로 설정할수도 있습니다. $config['page_query_string'] 이 TRUE 일때 페이지네이션 링크는 아래처럼 바뀝니다.
http://example.com/index.php?c=test&m=page&per_page=20
"per_page"는 기본적으로 전달되는 쿼리스트링입니다. 그러나 $config['query_string_segment'] = 'your_string' 를 통해서 여러분이 설정할수도 있습니다.
감싸는 태그 추가하기 Adding Enclosing Markup
페이지네이션 전체에 감싸는 태그를 추가하고싶으면 아래와 같이 합니다:
$config['full_tag_open'] = '<p>';
페이지네이션 왼쪽에 위치할 여는태그입니다.
$config['full_tag_close'] = '</p>';
페이지네이션 오른쪽에 위치할 닫는태그 입니다.
"처음으로"링크 커스터마이징 Customizing the First Link
$config['first_link'] = 'First';
페이지네이션 맨 왼쪽에 위치할 "처음으로" 링크 글을 설정합니다.First 대신 "처음","맨처음" 등을 쓰시는게 좋겠지요 :)
값을 FALSE로 설정하면, 이 링크는 렌더링 되지않습니다.
$config['first_tag_open'] = '<div>';
"처음으로"링크의 여는태그 입니다.
$config['first_tag_close'] = '</div>';
"처음으로"링크의 닫는태그 입니다.
"끝으로"링크 커스터마이징 Customizing the Last Link
$config['last_link'] = 'Last';
페이지네이션 맨 오른쪽에 위치할 "끝으로" 링크 글을 설정합니다.
값을 FALSE로 설정하면, 이 링크는 렌더링 되지않습니다.
$config['last_tag_open'] = '<div>';
"끝으로"링크의 여는태그 입니다.
$config['last_tag_close'] = '</div>';
"끝으로"링크의 닫는태그 입니다.
"다음" 링크 커스터마이징 Customizing the "Next" Link
$config['next_link'] = '>';
"다음" 링크 글을 설정합니다.
값을 FALSE로 설정하면, 이 링크는 렌더링 되지않습니다.
$config['next_tag_open'] = '<div>';
"다음"링크의 여는태그 입니다.
$config['next_tag_close'] = '</div>';
"다음"링크의 닫는태그 입니다.
"이전"링크 커스터마이징 Customizing the "Previous" Link
$config['prev_link'] = '<';
"이전" 링크 글을 설정합니다.
값을 FALSE로 설정하면, 이 링크는 렌더링 되지않습니다.
$config['prev_tag_open'] = '<div>';
"이전"링크의 여는태그 입니다.
$config['prev_tag_close'] = '</div>';
"이전"링크의 닫는태그 입니다.
"현재페이지"링크 커스터마이징 Customizing the "Current Page" Link
$config['cur_tag_open'] = '<b>';
"현재페이지"링크의 여는태그 입니다.
$config['cur_tag_close'] = '</b>';
"현재페이지"링크의 닫는태그 입니다.
링크숫자 커스터마이징 Customizing the "Digit" Link
$config['num_tag_open'] = '<div>';
링크숫자 링크의 여는태그 입니다.
$config['num_tag_close'] = '</div>';
링크숫자 링크의 닫는태그 입니다.
페이지 숨기기
페이지를 숨기고 싶다면(예를 들어 이전,다음 링크만 출력하고 싶다든지) 아래와 같이 하면 해당 페이지가 렌더링 되지않습니다.
$config['display_pages'] = FALSE;
모든 링크에 클래스 추가
페이지네이션 클래스를 통해 생성된 모든 링크에 클래스 속성을 추가하고자 한다면, "anchor_class"를 원하는 클래스 이름으로 설정하면 됩니다.