Jekyll Blogging 1

LeeMir, 11 December 2020

Jekyll Blog에 Category 생성


2주 전, 이 블로그에 카테고리를 만드는 것을 포기하고 티스토리 블로그를 만들었다.

그렇지만 완전히 포기하지는 않고 Jekyll에 사용되는 Liquid 문법을 열심히 파보았다.

Liquid는 Ruby로 작성된 템플릿언어로, 생긴게 조금 낯설었다.

그렇지만 Jekyll 템플릿 설명서 사이트에서 어느 정도 설명해줘서 할 수 있었다. (한글 번역은 덤)

Jekyll 블로그에서 Markdown이나 HTML 파일을 보면 —으로 둘러쌓인 머리말을 볼 수 있다.

여기서 미리 짜여져있는 변수에 값을 넣어줄 수 있는데,

---
title: Jekyll Bloging 1
author: LeeMir
layout: post
category: jekyll
---

이런 식이다.

title의 경우 글의 제목으로, 밑에서 page.title으로 변수처럼 쓸 수 있다.

layout은 문서의 형식인데, _layouts와 같은 이름의 폴더에 있는 html에 작성해놓은 형식으로 쓰겠다는 것이다.

(위와 같은 경우에는 _layouts/post.html에 작성해놓은 레이아웃으로 이 페이지를 작성한다고 보면 된다.)

여튼 이런 형식에 category라는 변수도 있다.

categories도 있는데 이건 그냥 [카테고리1, 카테고리2, … ] 이런식으로 배열의 형태로 복수로 카테고리를 선택하게 하는 것 같다.

category 변수를 쓰는 순간 이 페이지의 주소가 원래는 블로그 주소/게시물.html이었는데, 블로그 주소/카테고리/게시물.html이 된다.

이 페이지를 예로 들자면

category변수를 안쓸 경우 : https://leemir.github.io/2020/12/11/01-post.html

category변수를 쓸 경우 : https://leemir.github.io/jekyll/2020/12/05/01-post.html

이런식으로 주소가 수정된다.

그러면 우리가 할 일은 카테고리별로 그 카테고리의 글들만 출력되게 하는 것이다.

내가 쓰고 있는 prologue에서는 blog 레이아웃에서 {%- for _post in _posts -%}와 같은 형식으로 post를 탐색하는게 있었는데, _posts같은 경우 미리 설정되어있는 변수인게 아니라, {%- assign _posts = site.posts | sort: 'date' | reverse -%}로 이 페이지에서 설정해놓은 변수였다.

따라서 _posts를 선언할 때 site.posts로 전체 글을 불러오게 하지 말고, site.categories[CATEGORY]로 CATEGORY에 해당하는 글들만 불러오는 것이다. 그러면 항상 CATEGORY라는 카테고리에 있는 글만 담아오게 되는 것인데, 이 부분도 변수로 만들어버리면 된다.

여기에는 구글 검색으로 여러 아이디어를 얻었는데, 핵심은 page.title을 이용해 미리 카테고리의 이름과 같은 이름을 가진 페이지들을 만들어놓고 CATEGORY를 page.title로 정의하는 것이다.

그렇게 한 결과 카테고리를 구현하는 데에 성공하였고, 그 다음 문제는 카테고리라는 탭을 열었을 때 어떤 카테고리가 있는지 출력해주는 것이었는데, 여기까지는 아직 무리여서 html로 일일히 하이퍼링크를 따서 작성했다.

따라서 다음 목표는 category.html을 이쁘게 만드는 것이 되겠다.