Jekyll - category array를 sub-category처럼 사용하기
Aug 14, 16
dev
jekyll
dev
category의 sub category를 만들려고 했다.dev
category 페이지에서 sub category별로 post title을 모아서 보여주려고 했다.- Jekyll의 category관련 variable
site.categories
site.categories[CATEGORY_NAME] or site.categories.CATEGORY_NAME
page.categories
- 각 post의 front matter에서 category를 지정할 수 있다.
---
layout: post
comments: true
title: Rails Integration Test
category: [dev, jekyll]
---
- Jekyll은 template language로 Liquid를 쓴다.
- 폴더를 보기 좋게 만든다. (front matter에 category가 정의되어 있지 않으면, _posts 폴더 내의 폴더 구조를 category로 본다.
- _posts
- biz
- book
- dev
- _posts
- dev category 페이지는
categories/dev
로 접근하게 한다./categories/dev/index.html
을 만든다.
- /categories/dev/index.html
- front matter에 category를 dev로 정의
---
layout: default
Title : Dev. Category
category: dev
---
- 빈 array 만들기
{% assign sub_categories = "" | split: "" %}
- front matter에 정의된 category 내의 모든 post에 대해 iteration
{% for post in site.categories[page.category] %}
- dev category가 아닌 경우 sub_categories array에 추가
{% if category != "dev" %}
{% assign sub_categories = sub_categories | push: category %}
{% endif %}
- 마지막으로 중복된 sub_category를 없애준다.
{% assign sub_categories = sub_categories | uniq %}
- 다른 category에서도 sub_category 배열을 만드는 코드를 쓸 거라서
/inclues/get_sub_category.html
로 따로 만든다./categories/dev/index.html
{% include get_sub_category.html %}
/includes/get_sub_category.html
{% assign sub_categories = "" | split: "" %}
{% for post in site.categories[page.category] %}
{% for category in post.categories %}
{% if category != "dev" %}
{% assign sub_categories = sub_categories | push: category %}
{% endif %}
{% endfor %}
{% endfor %}
{% assign sub_categories = sub_categories | uniq %}
- Jekyll에 대해서 알게된 것 정리
- liquid tag를 escaping 하는 법
- raw tag 사용 {% raw %} {% endraw %}
- 이 방법으론 endraw 를 escaping 하지 못함
- endraw는 {{ “{% endraw “ }}%} 이 방법으로 escaping.
- raw tag 사용 {% raw %} {% endraw %}
- Array empty check
{% assign size = sub_categories | size %}
{% if size == 0 %}
참고링크