Jekyll-Potion

pagination

pagination 는 현재 페이지를 기준으로 이전, 다음 페이지를 표현하는 tag 로서 layout 에서 사용됩니다.

기본적인 선언은 다음과 같습니다.

복사성공!
1
{% pagination %}

paginationproto theme 의 기본 template, stylesheet 는 다음과 같습니다.

이 값은 새로운 theme 작성시 용도에 맞게 변경이 가능합니다.

  • template
  • stylesheet
pagination.liquid
복사성공!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<div class="block-row pagination" data-skip-search-index>
    {% if potion.has_before? %}
        <div>
            <div class="block pagination">
                <a class="block-body" href="{{ potion.before.url }}">
                    <div class="thumb prev"></div>
                    <div class="content right">
                        <div class="x-small">이전</div>
                        <div class="bold">{{ potion.before.title }}</div>
                        <div class="small">{{ potion.before.description }}</div>
                    </div>
                </a>
            </div>
        </div>
    {% endif %}
    {% if potion.has_after? %}
        <div>
            <div class="block pagination">
                <a class="block-body" href="{{ potion.after.url }}">
                    <div class="content">
                        <div class="x-small">다음</div>
                        <div class="bold">{{ potion.after.title }}</div>
                        <div class="small">{{ potion.after.description }}</div>
                    </div>
                    <div class="thumb next"></div>
                </a>
            </div>
        </div>
    {% endif %}
</div>

template 작성 항목

변수명 필수여부 설명
data-skip-search-index Y data-skip-search-indexmake_search_index_processor를 통해 검색 index 생성을 피하기 위한 keyword 입니다.
모든 markdown 페이지의 본문, 제목, 설명은 검색 index 로 생성되기 때문에 pagination tag 로 인해 생성되는 내용의 경우 검색 index 로 생성되면 안됩니다.
때문에 data-skip-search-index 를 통해 중복된 index 생성을 피해야 합니다.
potion.has_before? Y 현재 페이지의 이전 페이지 존재 유무
potion.before.url Y 현재 페이지의 이전 페이지 url
potion.before.title   현재 페이지의 이전 페이지 제목
만일 제목을 대체할 다른 표현이 가능하다면 생략 가능
potion.before.description   현재 페이지의 이전 페이지 설명
만일 설명을 대체할 다른 표현이 가능하다면 생략 가능
potion.has_after? Y 현재 페이지의 다음 페이지 존재 유무
potion.after.url Y 현재 페이지의 다음 페이지 url
potion.after.title   현재 페이지의 다음 페이지 제목
만일 제목을 대체할 다른 표현이 가능하다면 생략 가능
potion.after.description   현재 페이지의 다음 페이지 설명
만일 설명을 대체할 다른 표현이 가능하다면 생략 가능
복사성공!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
div.block-row {
  @extend %box;
  display: flex;
  flex-wrap: wrap;
  margin-block-start: 1em;

  &.pagination {
    padding-block-start: 2em;
    @include border(border-top);
  }

  & > div {
    @extend %center-middle;
  }
}

div.block {
  @extend %clicked-box;

  height: fit-content;

  &.pagination {
    height: 6rem;
  }

  & > .block-body {
    @extend %left-middle;
    width: 100%;
    height: 100%;
    color: black;
    text-decoration: none;

    & > div.thumb {
      width: 4em;
      height: 4em;

      &.prev {
        @include left("darkgray", 80%);
      }

      &.next {
        @include right("darkgray", 80%);
      }

      &.document {
        @include document("darkgray", 70%);
      }

      &.file {
        @include file("darkgray", 70%);
      }

      &.link {
        @include link("darkgray", 60%);
      }
    }

    & > div.content {
      @extend %grid-row;
      width: calc(100% - 4em);
      height: fit-content;
      margin-inline: 1em;
      padding-block: 1em;

      & > * {
        @extend %left-middle;
        align-items: center;
        text-overflow: ellipsis;
        overflow: hidden;
        white-space: nowrap;
        min-height: 1em;
      }

      &.right > * {
        @extend %right-middle;
      }
    }
  }
}

div.block-row {
  row-gap: 0.5em;
  column-gap: 1em;

  & > div {
    flex: 0 0 calc(50% - 0.5em);
  }

  & > div:first-child:nth-last-child(1) {
    flex: 0 0 100%;
  }
}