Hugo가 어떻게 각각에 컨텐츠에 접근하고, 폴더를 조직화하여 블로그를 구성하는지 알아보자.

컨텐츠 구성

(root)
└── content
    └── project
    |   └── index.md  // <- https://example.com/project/
    ├── posts
    |   ├── firstpost.md   // <- https://example.com/posts/firstpost/
    |   └── secondpost.md  // <- https://example.com/posts/secondpost/
    └── study
        ├── first.md       // <- https://example.com/study/first/
        └── second.md      // <- https://example.com/study/second/

위 처럼 각각 project, posts, study 총 3개의 카테고리가 있다고 가정할 때, Hugo는 section, slug, path, url의 변수들을 이용해 컨텐츠를 관리한다.

  • section : default 컨텐츠 타입, content폴더의 어느위치에 있느냐에 따라 달라진다.
  • slug : slug 변수는 각 컨텐츠 파일의 이름 (e.g., firstpost.md) 가 될수 있고, frontmatter에 의해 설정될 수 있다.
  • path : section에서 slug 직전 까지의 경로
  • url : 컨텐츠의 상대적인 url, section부터 slug가 포함된 경로와 같다.
.         url
.       ⊢--^-⊣
.        path    slug
.       ⊢--^-⊣⊢---^---⊣
.           filepath
.       ⊢------^------⊣
content/posts/firstpost.md

컨텐츠 경로 재정의

Hugo가 생성한 defualt 컨텐츠 경로를 frontmatter를 이용해 재정의(override)할 수 있다.

  • slug
    slug를 재정의 하는 방법은 frontmatterslug를 추가한다.
    (e.g., content/posts/old-post.md)

    +++
    title ="New Post"
    slug ="new-post"
    +++

  • 결과 : example.com/posts/new-post/

  • url
    URL또한 재정의(override)될 수 있다. url은 baseURL 다음으로 올 경로를 넣으면 된다. (참고로 --uglyURLs 옵션을 무시한다) (e.g., content/posts/old-url.md)

    +++
    title ="old url"
    slug ="/blog/new-url"
    +++

baseURL이 ttps://example.com로 설정된 경우, 기존 url인 posts/old-url.md를 다음처럼 바꾼다.

  • 결과 : https://example.com/blog/new-url/