페이지네이션 Pagination Class

CodeIgniter의 페이지네이션 클래스는 매우 사용하기 쉽답니다. 100% 커스터마이징 가능합니다. 커스터마이징은 동적으로 할 수도 있고, 설정을 저장할 수도 있습니다.

“페이지네이션” 이라는 말에 익숙하지 않으신가요 ? 바로 아래와 같이 페이지 이동을위한 링크를 뜻하는 말입니다:

« First  < 1 2 3 4 5 >  Last »

예제 Example

컨트롤러 (controller) 함수내에서 어떻게 페이지를 생성하는지 보여주는 예제입니다:

$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();

참고 Notes

$config 배열에는 설정값들이 들어갑니다. 위와 같이 그 배열을 $this->pagination->initialize() 함수에 넘겨줍니다. 20개정도의 설정 아이템들이 있지만, 위에서 보여준것은 그중에서 반드시 필요한 세 가지 입니다. 아래는 각 아이템에 대한 설명입니다:

  • base_url 페이지네이션에 포함될 컨트롤러/함수 의 전체 url 입니다. 위의 예제에서,컨트롤러는 “Test” 이고 함수는 “page” 입니다. url을 다른 구조로 하고 싶다면 url 라우팅 변경(re-route your URI) 을 이용하실 수 있습니다.
  • total_rows페이지네이션할 전체 레코드의 수를 나타냅니다. 통상적이로 이숫자는 데이터베이스 쿼리에서 리턴되는 전체 열 수 입니다.
  • per_page 한페이지에 보여질 아이템(열)수 입니다. 위의 예제에서는 20 개의 아이템이 한페이지에 보여집니다.

보여줄 페이지네이션이 없을 경우 create_links() 함수는 빈 문자열을 리턴합니다.

config file 에서 환경설정 Setting preferences in a config file

설정을 위처럼 하지 않고, 설정 파일에 저장할 수도 있습니다. pagination.php 파일을 만든 후 $config 배열을 추가하세요. 그런 후 파일을 application/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' 를 통해서 여러분이 설정할 수도 있습니다.

$config[‘reuse_query_string’] = FALSE;

기본적으로 당신의 쿼리 문자열 인수 (다른 쿼리 문자열 옵션과는 상관 없는)는 무시됩니다. true로 설정을 설정하면 URI 새그먼트 후 URL에 접미사하기 전에 기존의 쿼리 문자열 인수를 추가합니다 :

http://example.com/index.php/test/page/20?query=search%term

이것은 일반적인 URI Segments 뿐만 아니라 쿼리 스트링 인자까지 혼합하는 것을 도와줍니다.

$config[‘prefix’] = ‘’;

사용자 정의 접두사가 경로에 추가됩니다. 접두사 값은 오프셋 새그먼트 바로 전에 위치하게 될 것입니다.

$config[‘suffix’] = ‘’;

사용자 정의 접미사가 경로에 추가됩니다. 접미사 값은 오프셋 새그먼트 바로 후에 위치하게 될 것입니다.

$config[‘use_global_url_suffix’] = FALSE;

TRUE 로 설정하면, $config['suffix']의 값을 무시하고, 대신 application/config/config.php 파일에 $config['url_suffix']의 값으로 설정됩니다.

감싸는 태그 추가하기 Adding Enclosing Markup

페이지네이션 전체에 감싸는 태그를 추가하고싶으면 아래와 같이 합니다:

$config[‘full_tag_open’] = ‘<p>’;

페이지네이션 왼쪽에 위치할 여는태그입니다.

$config[‘full_tag_close’] = ‘</p>’;

페이지네이션 오른쪽에 위치할 닫는태그 입니다.

페이지 숨기기 Hiding the Pages

페이지를 숨기고 싶다면 (예를 들어 “이전”, “다음” 링크만 출력하고 싶다든지) 아래와 같이 하면 해당 페이지가 렌더링 되지않습니다:

$config['display_pages'] = FALSE;

A태그에 속성 추가 Adding attributes to anchors

페이지네이션 클래스에 의해 렌더링 되는 모든 링크에 추가 속성을 더하고 싶다면, config 에 key/value 로 전달하면 됩니다:

// Produces: class="myclass"
$config['attributes'] = array('class' => 'myclass');

Note

“anchor_class” 를 통해 세팅했던 예전 방식은 deprecated 되었습니다.

rel 속성 제거 Disabling the “rel” attribute

기본적으로 rel 속성은 동적으로 생성되고 A 태그에 추가됩니다. 만약 그 속성을 해제하고 싶으면, 일반 속성으로 부울 FALSE를 전달할 수 있습니다.

$config['attributes']['rel'] = FALSE;

클래스 레퍼런스 Class Reference

class CI_Pagination
initialize([$params = array()])
인수:
  • $params (array) – Configuration parameters
반환값:

CI_Pagination instance (method chaining)

반환형:

CI_Pagination

원하는 옵션과 함께 페이지네이션 클래스를 초기화하기.

반환값:HTML-formatted pagination
반환형:string

단지 하나의 페이지만 있다면, 생성되는 링크나 빈 문자열을 포함하는 “pagination” 을 반환합니다.