1. Home
  2. /
  3. Hugo
  4. /
  5. Hugoを使い始めた人に捧げるTips11選

Hugoを使い始めた人に捧げるTips11選

Hugoを使い始めた人に捧げるTips11選

1. とりあえずhugo server -Dって使ってるけどこれって何?

draft: trueのコンテンツファイルも含めて出力。

詳しくはhugo server --helpでチェック


2. taxonomyとtermの違い

  • taxonomyは「タグ」や「カテゴリー」といった分類自体
  • termはそのタグやカテゴリーに属する「go」とか「tips」のことです

こちらのサイトが非常に分かりやすいです!
https://maku77.github.io/hugo/taxonomy/basic.html


3. content配下の固定ページに共通のlayoutを使いたい

content配下のKindが「page」になるので「layout/page/single.html」が使えます

こちらのサイトが非常に分かりやすいです!
https://maku77.github.io/hugo/template/page-types.html


4. PermalinkとRelPermalinkの違いは?

{{ .Permalink }} → "https://example.com/hugo/mystyle.css"  
{{ .RelPermalink }} → "/hugo/mystyle.css"

5. absURLとrelURLの違いは?

{{ "mystyle.css" | absURL }} → "https://example.com/hugo/mystyle.css"
{{ "mystyle.css" | relURL }} → "/hugo/mystyle.css"

6. assetsとstaticディレクトリの使い分けは?

基本的にはassetsを使い、ファイルのビルドや圧縮をしない場合にstaticを使うといいと思います


7. $.Site.Siteの違いは何?

$.Siteはグローバル変数に明示的にアクセスしたい場合に使います。

ページ一覧を出力する際に、その一覧ページのタイトルを出力するときなんかに使えます
layouts/_default/list.html

{{ range .Pages }}
    {{ $.Title }} → 一覧ページタイトル
    {{ .Title }}  → ページタイトル
{{ end }}

https://gohugo.io/templates/introduction/#2-use--to-access-the-global-context


8. partial templateへの引数の渡し方は?

こんな感じで渡せます

layouts/partials/svgs/external-links.svg

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
fill="{{ .fill }}" width="{{ .width }}" height="{{ .height }}" viewBox="0 0 32 32" aria-label="External Link">
</svg>

layouts/_default/list.html

{{ partial "svgs/external-links.svg" (dict "fill" "#01589B" "width" 10 "height" 20 ) }}

詳しくは公式サイトをチェック
https://gohugo.io/functions/dict/
https://gohugo.io/templates/partials/


9. 配列や連想配列の空チェック

reflect.IsSlicereflect.IsMapを使わなくても、if文でシンプルにチェックできます

{{ $item := dict "tags" (slice "tag1" "tag2") }}
{{ if $item.tags }}
    {{ range $item.tags }}
        {{ . }}
    {{ end }}
{{ end }}

10. Hugoのテンプレート内のハイフンの有無について

前後の空白を取り除いてくれます {{- .Title -}}

詳しくは公式サイトをチェック
https://gohugo.io/templates/introduction/#whitespace


11. キャメルケースのタグが小文字に変換されてしまう

configのdisablePathToLowertrueにすると、小文字に変換されるのを無効にできます

disablePathToLower: true

関連記事

Go言語Tips② Hugoで使われるlayoutの正体

Go言語Tips② Hugoで使われるlayoutの正体

Hugoで使われるlayoutですが実態はgo-templateという、いわゆるテンプレートエンジンです https://pkg.go.dev/text/template テンプレート内のハイフンありなしの違い たまにHugoテンプレート内で{{ .Title }}や{{- .Title -}}で書いてるものを見かけます この違いはハイフンを付けることで前後の空白を除去したい場合に使われます ちなみに公式ドキュメントにあります https://pkg.go.dev/text/template#hdr-Text_and_spaces 配列や連想配列の空チェック Hugoを使う際、空ではない文字列or配列
Hugoで年月別のアーカイブを作る方法

Hugoで年月別のアーカイブを作る方法

Hugoでアーカイブを作るには2種類ほど方法があります ①タグやカテゴリと同様にタクソノミーを設定する config.ymlにarchiveを追加し taxonomies: archive: archives 記事のフロントマターに年月を設定してあげれば archives: ["2021年12月"] こんな感じのデータが作成されます。この時「yyyy年mm月」の形式でないと年月でソートされないので注意です {{ .Site.Taxonomies.archives.Alphabetical.Reverse }} [ {2021年12月 [WeightedPage(0,