Post

[Github] 블로그 커스터마이징-3 포토폴리오 탭 추가

[Github] 블로그 커스터마이징-3 포토폴리오 탭 추가

수정 목표

저번에 사이드 바 Archives 기능에 필터 기능을 추가해서 Project 탭을 생성 했습니다.

곱씹어 보니 about 탭에 소개와 Project 페이지를 굳이 분리 할 필요가 있나..? 해서 두 탭을 하나로 묶어서 portfolio 탭을 생성 하기로 했습니다.

구조 분석

_tabs/.md → sidebar 목록, 각 마크다운 파일이 각 하나의 탭으로 적용 됨 _layouts/.html → 마크다운 파일에 설정 될 template.html


코드 수정

_tabs/portfolio.md

projct 탭을 생성할 때와 동일하게 신규 마크다운 파일을 하나 생성했습니다.

양식도 동일하게 아이콘은 묘에 사람의 히스토리를 볼 수 있는 뜻으로 해골 모양으로 했습니다.

1
2
3
4
5
---
layout: portfolio
icon: fa-solid fa-skull
order: 5
---

_layouts/archives_project.html

abot과 portfolio 마크다운의 차이는 loyout을 지정 하느냐 차이입니다. 기존 abot의 경우는 default 값을 사용 하기에 page.html 사용하게 됩니다.

page.html, archives_project.html 코드를 병합하여 portfolio.html 생성합니다.

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
---
layout: page
---

{% include lang.html %}
{% assign df_strftime_m = site.data.locales[lang].df.archives.strftime | default: '/ %m' %}
{% assign df_dayjs_m = site.data.locales[lang].df.archives.dayjs | default: '/ MM' %}


<article class="px-1">
  {% if page.layout == 'page' or page.collection == 'tabs' %}
    {% assign tab_key = page.title | downcase %}
    {% assign title = site.data.locales[lang].tabs[tab_key] | default: page.title %}
    <div class="content">
      {{ content }}
    </div>
  {% else %}
    {{ content }}
  {% endif %}
  
  <div id="archives" class="pl-xl-3">
    {% for post in site.posts %}
      {% if post.categories contains 'Project' %} <!-- 필터링 -->
        {% assign cur_year = post.date | date: '%Y' %}
  
        {% if cur_year != last_year %}
          {% unless forloop.first %}</ul>{% endunless %}
  
          <time class="year lead d-block">{{ cur_year }}</time>
          {{ '<ul class="list-unstyled">' }}
  
          {% assign last_year = cur_year %}
        {% endif %}
  
        <li>
          {% assign ts = post.date | date: '%s' %}
          <span class="date day" data-ts="{{ ts }}" data-df="DD">{{ post.date | date: '%d' }}</span>
          <span class="date month small text-muted ms-1" data-ts="{{ ts }}" data-df="{{ df_dayjs_m }}">
            {{ post.date | date: df_strftime_m }}
          </span>
          <a href="{{ post.url | relative_url }}">{{ post.title }}</a>
        </li>
  
        {% if forloop.last %}</ul>{% endif %}
      {% endif %}
    {% endfor %}
  </div>
</article>


삽질 후기

한번 해본 작업이라 생각보다 금방 작업했습니다. 역시 삽질은 위대합니다.

This post is licensed under CC BY 4.0 by the author.