[Hugo] Hugo 문법 정리

Dohee Kang·2023년 2월 12일
0

Hugo

목록 보기
1/2

Hugo는 Go언어로 작성된 정적 사이트 생성기이다.
Hugo를 사용하면서 참고할만한 사이트가 공식 문서 외에 없어서 내 벨로그에 정리하고자 한다.


{{ .Site.Params.siteTitle }}

  • {{ .Site.Params.siteTitle }} 란 변수는 config/config.json 파일에서 가져온 데이터이다.
<h4>{{ .Site.Params.siteTitle }}</h4>

{{ relURL }}

  • 문자열인 url을 실 url로 변환한다.
<a href="{{ 'url주소' | relURL }}">URL 접속</a>

{{ with }}

  • 변수가 없거나 비어있으면 해당 블록을 건너뛴다.
{{ with $.Site.Params.type }}
<!-- ... -->
{{ end }}

Front Matter

  • Front Matter 형식은 TOML, YAML, JSON 총 3가지이며 시작과 끝이 --- 로 되어있는 것을 보아 YAML 형식인 것을 알 수 있다.
  • Front Matter에 LayoutTitle 속성은 반드시 포함해야 한다.
  • 속성
    • Layout : 콘텐츠 섹션에 해당하는 레이아웃 디렉토리에서 동일한 이름의 레이아웃을 찾는다.
    • Title : 콘텐츠의 제목
    • Type : 콘텐츠 유형, Type이 지정되지 않은 경우 디렉토리에서 자동으로 파생된다.
  • 공식 문서에 작성된 속성이 아니여도 자유롭게 추가 가능하다.
---
Layout: page
Title: 'title'
---

{{ define ~ }}

  • 기본 템플릿이며 layouts 폴더 안에 baseof.html이 위치해야 한다.
{{ define "main" }}
  <!-- ... -->
{{ end }}

{{ partial ~ }}

  • 부분 템플릿이며 partial을 사용할 때 다음 위치에 파일이 있어야 한다.
    • layouts/partials/*<PARTIALNAME>.html
    • themes/<THEME>/layouts/partials/*<PARTIALNAME>.html
{{ partial "page/header" . }}

{{ print }}와 {{ safeHTML }}

  • print : 해당 내용을 문자열로 선언한다.
  • safeHTML : 작성한 문자열을 HTML 문서로 선언한다.
{{ print "<!-- SECTION -->" | safeHTML }}

{{- range ~ }}

  • range : range 함수 (반복문)
{{ range .Site.Params.data }}
<!-- ... -->
{{ end }}

변수 선언

  • $변수명 : 사용자 정의 변수
  • := : :=을 사용하면 var와 명시적인 타입(int, bool...) 생략 가능
{{ $data := .Site.Params.data }}

eq()

  • eq(arg1, arg2) : 인수 2개가 같으면 true 리턴, 같지 않으면 false 리턴
eq($Site.Params.title "title")

공식 문서 참고 사이트

profile
오늘은 나에게 어떤 일이 생길까 ✨

0개의 댓글