Jekyll-Potion

empty

empty 는 본문이 없는 markdown 페이지 중 하위 페이지가 있을 경우, 하위 페이지의 목록을 보여주는 tag 로서 make_empty_content_processor 를 통해 자동으로 생성되며, 별도로 선언할 필요는 없습니다.

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

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

  • template
  • stylesheet
empty.liquid
복사성공!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<div class="block-row" data-skip-search-index>
    {% for child in potion.children %}
        <div>
            <div class="block">
                <a class="block-body" href="{{ child.url }}">
                    <div class="thumb document"></div>
                    <div class="content">
                        <div class="bold">{{ child.title }}</div>
                        <div class="small">{{ child.description }}</div>
                    </div>
                </a>
            </div>
        </div>
    {% endfor %}
</div>

template 작성 항목

변수명 필수여부 설명
data-skip-search-index Y data-skip-search-indexmake_search_index_processor를 통해 검색 index 생성을 피하기 위한 keyword 입니다.
모든 markdown 페이지의 본문, 제목, 설명은 검색 index 로 생성되기 때문에 empty tag 로 인해 생성되는 내용의 경우 검색 index 로 생성되면 안됩니다.
때문에 data-skip-search-index 를 통해 중복된 index 생성을 피해야 합니다.
potion.children Y 하위 페이지 목록을 가르킵니다. for iteration 을 통해 하위 페이지를 rendering 함으로 반드시 사용되어야 합니다.
child Y 하위 페이지의 속성을 가르킵니다.
child.url Y 하위 페이지의 url 속성을 가르킵니다.
child.title   하위 페이지의 제목을 가르킵니다.
child.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%;
  }
}