Jekyll 옵션 정리

DokBak·2022년 7월 10일
0

Ruby

목록 보기
3/6

Jekyll 옵션 정리

1. 머릿말

반복적으로 사용하는 변수의 경우에는 [_config.yml]에 [defaluts]키를 사용하여 사이트 전체에 사용되는 기본 값을 정의 할 수있다.

defaults:
  -
    scope:
      path: "" # 이 빈 문자열은 프로젝트의 모든 파일을 의미함
      type: "posts" # 이전 Jekyll 2.2 에서는 `post`
    values:
      layout: "default"
  -
    scope:
      path: "projects"
      type: "pages" # 이전 Jekyll 2.2 에서는 `page` 
    values:
      layout: "project" # 이전 디폴트 레이아웃 설정을 덮어씀
      author: "Mr. Hyde"
  • defaults의 항목
    • scope : 프로젝트 내의 파일 범위를 지정한다.
      • path (scope를 사용시 필수 항목)
        • "" 빈문자열로 지정하면 모든 파일을 의미한다.
        • "_posts" 로 지정하면 _posts 폴더 내부의 모든 파일을 지정한다.
        • "projects"로 지정하면 project 폴더 내부의 모든 파일을 지정한다.
      • type (선택사항)
        • 프로젝트 내에 모든파일에 하나의 레이아웃을 적용하길 윈치 않을 경우도 있다. 예를 들어 css파일과 같이. 이런경우 type을 지정하여 원하는 css 파일을 지정가능하다.
        • "posts" 로 지정하면 posts인 파일에만 레이아웃이 설정된다.
        • "pages" 로 지정하면 pages인 파일에만 레이아웃이 설정된다.
    • values : scope에서 지정한 파일 범위별로 설정 값을 지정한다.
      • layout
        • "project"로 지정하면 scope에서 지정된 폴더(파일)들이 "project" 레이아웃을 사용한다.
      • author
        • "Mr. Hyde"로 지정하면 저자 변수가 지정된다.
collections:
  my_collection:
    output: true

defaults:
  -
    scope:
      path: ""
      type: "my_collection" # 사이트의 컬렉션"들"
    values:
      layout: "default"

my_collection 이라는 컬렉션 안에서는 layout이 default로 설정된다.

각각의 md파일애 머릿말을 추가할 때는 제일 상부에 작성한다.

---
머릿말
---

머릿말 부분에 작성되는 내용은 md파일 내에서 반복적으로 사용할 변수명과 값을 설정한다.
변수에는 사용자가 임의의 변수명을 지정해서 사용하는 사용자 정의 변수와 이미 지정되어 있는 전역 변수를 사용하는 방법이 있다.

사용자 정의 변수는 [test : value] 와 같이 작성한다.
변수명은 test, 변수의 값은 value로 설정되며, 본문 부분에서 {{ page.test }} 로 사용한다.

전역 변수는 다양하게 존재하는데 그중에 몇 가지 변수에 대해서 작성한다.

  • layout
    • 레이아웃 관련 정보 + 머리말.
    • 레이아웃의 머리말에 설정한 사용자 변수도 여기에 포함된다.
    • 레이아웃 파일은 _layouts 디렉토리에 있는 파일을 지정한다.
    • null을 사용하면 레이아웃을 사용하지 않고 파일을 처리한다.
    • 버전 3.5 부터 none을 사용하면 기본값에 관계없이 레이아웃을 사용하지 않고 파일을 처리한다.
    • 사용예) layout : default
  • permalink
    • 생성된 블로그 포스트 URL을 사이트 전역 스타일이 아닌 별도의 URL로 지정하는 방법
    • 사용예) permalink : FixURL
    • URL : username.github.io/FixURL
  • published
    • 사이트가 생성되었을때 특정 포스트의 출력유무를 정할 수 있다. false는 표시하지 않는다.
    • 사용예) published : false
  • site
    • 사이트 정보 + _config.yml 의 환경설정 정보.
  • page
    • 페이지 관련 정보 + 머리말.
    • 머리말에 설정한 사용자 변수도 여기에 포함된다.
  • content
    • 레이아웃 파일 내, 포스트 또는 페이지로 감싸진 렌더링된 컨텐츠.
    • 포스트나 페이지 파일에는 정의되어 있지 않는다.
  • paginator
    • 이 변수는 환경설정 옵션 paginate가 설정되어 있을 때 사용할 수 있다.
    • 페이지 나누기를 사용할 때 사용

포스트 전용 전역 변수

  • date
    • 여기에 지정한 날짜가 포스트에 있는 날짜보다 더 우선순위가 높다.
    • 포스트를 올바르게 정렬하기 위해 사용할 수 있는 기능
    • 날짜 형식 : YYYY-MM-DD HH:MM:SS +/-TTTT
    • 시간, 분 초와 타임존 오프셋은 선택사항
  • category(categories)
    • 포스트를 폴더 안에 넣는 대신, 포스트에 하나 또는 다수의 카테코리를 지정할 수도 있다.
    • 사이트 생성 작업 중에 이 포스트들은 보통 방식으로 카테고리가 할당된 것과 동일하게 작동
    • 카테고리들(복수형)은 공백 혹은 구분된 문자열로 정의한다.
  • tags
    • 카테고리와 비슷하게, 하나 또는 여러 개의 태그를 포스트에 추가가능하다.
    • 태그 또한 카테고리와 마찬가지로 공백 혹은 구분된 문자열로 정의한다.

2. 페이지 나누기

포스트등을 페이징 처리

2-1. 플러그인 추가

_config.yml에 아래의 내용을 추가

plugins:
  - jekyll-paginate

2-2. 페이지 나누기 활성화 (paginator)

_config.yml에 아래의 내용을 추가
한 페이지 당 표시하고자 하는 포스트의 최대 개수를 입력

paginate : 5

이렇게 나뉘어진 페이지가 생성될 위치도 지정할 수 있다.

paginate_path : "/blog/page:num/"

이 설정은 blog/index.html에서 사용되어, 나뉘어진 각 페이지는 paginaator라는 Liquid로 받게 되며 결과물은 blog/page:num에 만들어 진다.

페이지 나누기 플러그인이 제공하는 Liquid객체 paginator의 속성은 아래와 같다.

변수 설명
paginator.page 현재 페이지 번호
paginator.per_page 페이지 당 포스트 수
paginator.posts 현재 페이지의 포스트들
paginator.total_posts 전체 포스트 개수
paginator.total_pages 전체 페이지 개수
paginator.previous_page 이전 페이지 번호. 이전 페이지가 없는 경우 nil
paginator.previous_page_path 이전 페이지 경로. 이전 페이지가 없는 경우 nil
paginator.next_page 다음 페이지 번호. 다음 페이지가 없는 경우 nil
paginator.next_page_path 다음 페이지 경로. 다음 페이지가 없는 경우 nil

3. 사이트 변수 (site)

변수 설명
site.time 현재 시간
site.pages 모든 페이지 목록
site.posts 시간 역순의 모든 포스트 목록
site.related_posts 처리중인 파일이 포스트인 경우 : 최대 10개의 연관 포스트 목록이 할당된다.
site.static_files 정적 파일의 정적 파일들
site.html_pages .html로 끝나는 site.pages 목록의 하위 세트
site.html_files .html로 끝나는 site.static_files
site.collections 모든 콜렉션 목록(포스트 포함)
site.data _data 디렉토리에 있는 YAML파일에서 읽어들인 데이터 목록
site.documents 각 콜렉션의 모든 문서 목록
site.categories.CATEGORY CATEGORY 카테고리에 속한 모든 포스터 목록
site.tags.TAG TAG태그가 붙은 모든 포스트 목록
site.url _config.yml에 설정한 사이트의 URL. 설정파일에 url:http://mysite.com 이라는 내용이 있으면, site.url로 접근 가능하다. 개발환경에서 jekyll serve를 실행하면 host와 port, SSL관련 옵션으로 설정. 기본값 url:http://localhost:4000
site.[CONFIGURATION_DATA] _config.yml에 설정한 변수를 사용가능하다. foo : bar가 있다면 site.foo 로 사용가능하다.

4. 페이지 변수 (page)

변수 설명
page.content 페이지의 컨텐츠
page.title 페이지의 제목
page.excerpt 랟더링 되지 않은, 문서의 발췌 부분
page.url 도메인을 제외하고 슬래시(/) 문자로 시작하는 포스트 URL
page.date 포스트에 할당된 날짜 포스트의 머리말에 YYYY-MM-DD HH:MM;SS +/-TTTT 로 덮어쓸수있다.
page.id 포스트나 콜렉션의 문서에 대한 유일한 식별자
page.categories 포스트가 속한 카테고리들의 목록. _posts 디렉토리의 상위 디렉토리 구조가 카테고리를 결정한다. 경로가 /work/code/_posts/2008-12-24-closures.md 인 포스트에서는 이 변수가 ['work', 'code'] 로 설정되어 있다.
page.collection 이 문서가 속한 컬렉션의 레이블
page.tags 포스트에 붙어있는 태그 목록
page.dir 디렉토리와 게시물 또는 페이지 파일 사이의 경로
page.name 게시물 또는 페이지의 파일이름
page.path 페이지 또는 포스트의 실제 경로.
page.next site.posts의 포스트중에서 현재 포스트 위치를 기준으로 한 다음 포스트의 상대 경로. 마지막 항목이라면 nil을 반환
page.previous site.posts의 포스트중에서 현재 포스트 위치를 기준으로 한 이전 포스트의 상대 경로. 첫 번째 항목이라면 nil을 반환

0개의 댓글