데이터 파일
기본 변수뿐만 아니라, Liquid 템플릿 시스템을 통해 접근할 수 있는 자신만의 데이터를 정의할 수도 있습니다.
Jekyll 은 _data
디렉토리의 YAML 과 JSON, CSV, TSV 파일로부터 데이터를 읽어들일 수 있습니다.
단, CSV 와 TSV 파일에는 반드시 헤더 행이 있어야 합니다.
이 강력한 기능 덕분에 무언가를 반복해서 템플릿에 입력하는 일을 피할 수 있고,
_config.yml
파일을 수정하지 않고도 사이트 옵션을 설정할 수 있습니다.
플러그인/테마에서도 데이터 파일을 사용하여 환경설정 변수를 설정할 수 있습니다.
데이터 폴더
_data
폴더는 사이트를 생성할 때 사용하는 부가적인 데이터를 저장하는
공간입니다. 이 파일들은 반드시 YAML 이나 JSON, CSV 파일 (확장자가 .yml
,
.yaml
이나 .json
, .csv
) 이어야 하며, site.data
를 통해 이
데이터를 사용할 수 있습니다.
예제: 구성원 목록
커다란 코드 뭉치를 여러 Jekyll 템플릿에 복사-붙여넣기하지 않기 위해 데이터 파일을 활용하는 기본적인 예제입니다:
_data/members.yml
에:
- name: Eric Mill
github: konklone
- name: Parker Moore
github: parkr
- name: Liu Fengyun
github: liufengyun
또는 _data/members.csv
에:
name,github
Eric Mill,konklone
Parker Moore,parkr
Liu Fengyun,liufengyun
site.data.members
로 (파일명이 변수 이름으로 사용되는 것에 주목) 이
데이터에 접근할 수 있습니다.
이제 템플릿에 멤버들 목록을 출력할 수 있습니다:
<ul>
{% for member in site.data.members %}
<li>
<a href="https://github.com/{{ member.github }}">
{{ member.name }}
</a>
</li>
{% endfor %}
</ul>
하위 폴더
_data
의 하위 폴더에도 데이터 파일을 저장할 수 있습니다. 각 단계의 폴더 이름이
변수의 네임스페이스에 영향을 줍니다. 아래 예시에서는 여러 GitHub 단체들의 정보를
별도의 파일로 각각 분리하여 orgs
폴더 안에 정의하는 방법을 보여주고 있습니다:
_data/orgs/jekyll.yml
파일:
username: jekyll
name: Jekyll
members:
- name: Tom Preston-Werner
github: mojombo
- name: Parker Moore
github: parkr
_data/orgs/doeorg.yml
파일:
username: doeorg
name: Doe Org
members:
- name: John Doe
github: jdoe
이제 site.data.orgs
뒤에 파일명을 사용하면, 단체 정보에 접근할 수 있습니다:
<ul>
{% for org_hash in site.data.orgs %}
{% assign org = org_hash[1] %}
<li>
<a href="https://github.com/{{ org.username }}">
{{ org.name }}
</a>
({{ org.members | size }} members)
</li>
{% endfor %}
</ul>
예제: 특정 저자 정보 사용하기
페이지나 포스트는 특정 데이터를 사용할 수 있습니다. 아래 예제는 특정 정보에 접근하는 방법을 보여줍니다:
_data/people.yml
:
dave:
name: David Smith
twitter: DavidSilvaSmith
이제 포스트의 머리말에 페이지 변수처럼 저자 정보를 정의할 수 있습니다:
---
title: sample post
author: dave
---
{% assign author = site.data.people[page.author] %}
<a rel="author"
href="https://twitter.com/{{ author.twitter }}"
title="{{ author.name }}">
{{ author.name }}
</a>
당신의 사이트에 어울리는 탄탄한 탐색기능 구축방법에 대해서는(특히 설명서 웹사이트거나 정리해야할 페이지가 아주 많은 Jekyll 사이트인 경우), 탐색을 살펴보세요.