bojaghi/pagination

Simple pagination range generation helper

1.0.1 2024-10-26 14:47 UTC

This package is auto-updated.

Last update: 2024-10-26 14:48:10 UTC


README

게시판과 유사한 목록 페이지를 만들면, 항상 페이지네이션을 생각해야 합니다. 이 패키지는 워드프레스의 WP_Query 객체로부터 쉽게 페이지네이션의 시작과 끝을 구할 수 있게 도와줍니다.

사용방법

방법 1: 생성자에 WP_Query 넣기

WP_Query 사용시, 객체를 생성자로 넣어주면 됩니다.

$p = new Pagination($wp_query);
// create() 를 호출할 필요가 없습니다.

$begin = $p->getBegin();
$end   = $p->getEnd();

방법 2: 메서드 사용

메서드를 사용해 WP_Query를 지정합니다.

$p = new Pagination();
$p->setQuery($wp_query);
// create() 를 호출할 필요가 없습니다.

$begin = $p->getBegin();
$end   = $p->getEnd();

방법 3: 파리미터를 직접 입력

WP_Query를 사용하지 않는 경우, 직접 파라미터를 입력하여 계산할 수 있습니다.

$p = new Pagination();
$p
 ->setSize(5)      // 페이지네이션 길이. 기본 5.
 ->setNumItems(10) // 한 페이징당 표시할 아이템 수.
 ->setTotal(130)   // 모든 게시물의 수.
 ->setCurrent(2)   // 현재 페이지.
 ->create()        // 반드시 create() 함수를 호출해야 합니다.
;

$begin = $p->getBegin();
$end   = $p->getEnd(); 

페이지네이션 계산 방식

섹션

setType() 메서드에 Pagination::TYPE_SECTION을 입력하여 설정할 수 있습니다. 기본값입니다. 페이지네이션 사이즈만큼 표시하는데, 분할된 섹션 안에서 현재 페이지는 적당히 배치시키는 방식입니다. 아래 예시를 참고하세요. [ ] 안의 숫자는 현재 페이지입니다.

e.g. size=5

[1] 2 3 4 5  // 1-5 가 한 색션.
1 [2] 3 4 5  // 섹션 내 숫자를 항상 배치. 현재 페이지는 이 중 적당히 위치함.
1 2 [3] 4 5
1 2 3 [4] 5
1 2 3 4 [5]
[6] 7 8 9 10 // 6-10 은 다른 한 섹션.
6 [7] 8 9 10
6 7 [8] 9 10
6 7 8 [9] 10
6 7 8 9 [10]

센터

setType() 메서드에 Pagination::TYPE_CENTER를 입력하여 설정할 수 있습니다. 페이지네이션 사이즈만큼 표시되며, 현재 페이지가 항상 가운데 위치하게끔 최선을 다합니다. 아래 예시를 참고하세요.

e.g. size=5
[1] 2 3 4 5  // 항상 가운데 위치할 수는 없음!
1 [2] 3 4 5  //
1 2 [3] 5 5  // 이제부터 현재 페이지는 가운데 고정.
2 3 [4] 5 6
3 4 [5] 6 7
4 5 [6] 7 8
5 6 [7] 8 9
6 7 [8] 9 10