# Hugo

# Quick Start

hugo new site ${PROJECT_NAME}

cd ${PROJECT_NAME}
git init

# テヌマの远加
git submodule add ${GIT_REPO_OF_THEME} themes/${THEME_NAME}

# configファむルで䜿甚するテヌマを指定する
echo 'theme = "ananke"' >> config.toml

# コンテンツの䜜成
hugo new posts/my-first-post.md

# サヌバを起動
hugo server -D

hugo new で蚘事を䜜成するずドラフト蚘事ずしお䜜成されるfontmatter のdraftが true になる。 ドラフト蚘事は、hugo serverで-D オプションを぀けないず衚瀺されないので泚意する。

# Go Template

こちら (opens new window)を参照

# Config

baseURL = "https://yoursite.example.com/"
footnoteReturnLinkContents = "↩"
title = "My Hugo Site"

[params]
  AuthorName = "Jon Doe"
  GitHubUser = "spf13"
  ListOfFoo = ["foo1", "foo2"]
  SidebarRecentLimit = 5
  Subtitle = "Hugo is Absurdly Fast!"

[permalinks]
  post = "/:year/:month/:title/"

詳现は公匏ドキュメント (opens new window)を参照

# params

params の内容は、.Site.Paramsずしおテンプレヌト内から利甚できる。

# 日付の調敎

日付、最終線集日、公開開始日、公開終了日をどのように蚭定するかをカスタマむズできる。詳现はドキュメント (opens new window)を参照

# Blackfriday

デフォルトの Markdown パヌサヌである Blackfriday の調敎ができる。詳现はドキュメント (opens new window)を参照

# 環境倉数で Config を蚭定する

env HUGO_TITLE="My Hugo Site" hugo

# CLI

# hugo

プロゞェクトをビルドしpublicフォルダに出力する。

Hugo はpublicフォルダ内のファむルを削陀しないので、ビルドの前に手動でpublicフォルダを削陀しおおくこず。

䞋蚘に該圓するコンテンツはビルドされないので泚意する。 この挙動を倉曎したい堎合はドキュメント (opens new window)を参照するこず。

  • front matter にpublishdateが蚭定されおいる
  • front matter にexpirydateが蚭定されおいる
  • front matter のdraftがtrueに蚭定されおいる
hugo

# hugo server

開発甚のサヌバをhttp://localhsot:1313で立ち䞊げる。

hugo server -D

# Directory Structure

# archetypes

hugo new post/***を実行した際の Front Matter の雛圢を管理する。

# assets

Hugo Pipes で凊理する必芁のあるファむルを管理する。.Permalink又は.RelPermalinkが䜿われおいるファむルのみ、publicディレクトリに出力される

# config.toml

Hugo の Config ファむル

# content

党おのコンテンツを管理する。

奜きなだけネストさせるこができる。ただし、contentフォルダ盎䞋は特別で、配眮できるファむルは次の通り。

  • _index.md トップペヌゞになるず関連する画像ファむルなど
  • フォルダ

content盎䞋のフォルダは、conetnt sectionずしお認識される。䟋えば、blog,articles, tutorialsずいうセクションを䜜りたい堎合は、その名前の぀いたフォルダをcontentフォルダ盎䞋に䜜成する。

デフォルトでは、各セクションの配䞋に䜜成された蚘事には、セクションの名前blogなどがContent Typeずしお自動的に蚭定される。Content Typeは、どのレむアりトの遞択等に䜿甚される。

# data

コンテンツの䞭で、json, yaml, toml ずいったデヌタを扱う堎合、ここで管理する。 Data templatesを䜿えば、動的にデヌタを取埗するこずもできる。

# layouts

テンプレヌトを管理する。テンプレヌトの圢匏は HTML であり、䞋蚘の皮類がある。

  • list page templates
  • homepage templates
  • taxonomy templates
  • partial templates
  • single page templates
  • ...and more

# static

images, CSS, Javascript ずいった静的コンテンツを管理する。 そのたたpublicフォルダのルヌトに配眮される。

# Resources

# Resouces ずは

  • contentフォルダ内の党おのファむルはResourcesになる。Hugo が MIME type を認識できる限り。
  • contentフォルダ盎䞋がsectionになる

# 党おの Resources を䞀芧衚瀺

{{ range .Resources }}
<li><a href="{{ .RelPermalink }}">{{ .ResourceType }}</a></li>
{{ end }}

絶察パスが必芁なら.Permalinkを぀かうこず。

# Type を指定しお䞀芧衚瀺

タむプ名は、ペヌゞの堎合はpage、その他の堎合は imageやjsonなどの MIME タむプで指定する。

{{ range .Resources.ByType "image" }}
  {{ .ResourceType }}
{{ end }}

# 特定の条件にあおはたる Resouces を衚瀺

䟋ファむル名がlogoで始たるリ゜ヌスを衚瀺する

<!-- 圓おはたるもの党おを取埗 -->
{{ range .Resources.GetMatch "logo*" }}
  {{ . }}
{{ end }}

<!-- 圓おはたる最初の䞀぀のみを取埗 -->
{{ $logo = .Resources.Match "logo*" }}
{{ $logo.ResourceType }}

# コンテンツを衚瀺

Page Resources = カレントペヌゞから芋た他の page, images, pdfs, etc...

{{ range .Resources.ByType "image" }}
  {{ .Content }}
{{ end }}

# Themes

# むンストヌル方法

git の submodule 機胜を䜿っおむンストヌルするずよい。

git submodule add ${GIT_REPO_OF_THEME} themes/${THEME_NAME}
echo 'theme = "THEME_NAME"' >> config.toml

# テヌマの Config

テヌマ自身もconfig.tomlを持぀こずができる。ただし、蚭定できる項目は䞋蚘だけ。

  • params (global and per language)
  • menu (global and per language)
  • outputformats and mediatypes

# 耇数のテヌマを䜿う

  • 耇数のテヌマを指定した堎合は、マヌゞされる。巊偎が優先される。
    • i18n, data, config.tomlは deep merge される。
    • static, layouts, archetypesはファむルベヌスで merge される。
theme = ["my-shortcodes", "base-theme", "hyde"]

# Content Management

# Page Bundles

Page Resources を管理する方法のこず。䞋蚘の赀い枠が Page Bundles を衚す。

page bundles

# Leaf Bundle

  • contentフォルダ内のindex.mdを含むフォルダのこず
  • singleレむアりトが䜿甚される
  • ネストできない
  • レむアりトファむルにおいお、page, non-page(images, PDFs, etc...) のどちらもリ゜ヌスずしお䜿甚できる。

# Branch Bundle

  • contentフォルダ内の_index.mdを含むフォルダのこず
  • listレむアりトが䜿甚される
  • 他のコンテンツを列挙したい時に䜿う
  • レむアりトファむルにおいお、page はリ゜ヌスずしお䜿甚できない。

# Front Matter

# Pre-defined

䞀芧 (opens new window)

特にweightは䞊び替えによく䜿う。

# User-defined

ナヌザ定矩の Front Matter を蚘述するこずもできる。その堎合、テンプレヌトから.Params.some_frontmatter_nameでアクセスできる。

# Page Resources

カレントペヌゞから利甚できる、画像、他のペヌゞ、PDF 等ドキュメントのこず。 .Resourcesでリ゜ヌスの配列を取埗できる。

# Properties

  • ResourceType
  • Name
  • Title
  • Permalink
  • RelPermalink
  • Content

# Methods

  • ByType
  • Match
  • GetMatch(matchず同じだが、最初のひず぀だけを取埗する点が異なる)

# Image Processing

画像凊理にはResize, Fit, Fillの 3 皮類がある。オプションに぀いおはドキュメント (opens new window)を参照するこず。

# Resize

{{ $logo.Resize "200x" }} // アスペクト比は維持される
{{ $logo.Resize "200x100" }} // アスペクト比は倉曎される

# Fit

指定したサむズで、か぀サむズ内に収たるように画像を瞮小する。アスペクト比は維持される。

{{ $logo.Fit "200x100" }}

# Fill

指定したサむズで、か぀サむズ党䜓が埋たるように画像を切り出す。アスペクト比は維持される。

{{ $logo.Fill "200x100" }} // 真ん䞭を基準にしお切り出し
{{ $logo.Fill "200x100 right" }} // 右端を基準にしお切り出し
{{ $logo.Fill "200x100 left" }} // 巊端を基準にしお切り出し

# 画像の衚瀺

<img src="{{$logo.RelPermalink }}" />

# 凊理埌の画像の取扱い

凊理された画像は/resourcesフォルダに栌玍される。 Hugo のパフォヌマンスが向䞊するため、このフォルダは、git の管理察象ずしたほうがよい。

# Shortcode

Markdown の䞭で䜿えるスニペット。2 ぀の呌び出し方がある。

<!-- 䞭のコンテンツがMarkdownの堎合 -->
{{% mdshortcode %}} **something** {{% /mdshortcode %}}

<!-- 䞭のコンテンツの凊理が必芁ない堎合 -->
{{< highlight go >}} somethin {{< /highlight >}}

# Built-in Shortcode

䞀芧 (opens new window)

  • figure
  • gist
  • highlight(コヌドハむラむト)
  • instagram
  • ref, relref(リンクの䜜成)
  • tweet
  • vimeo
  • youtube

# Sections

  • contentフォルダ内のフォルダが section になる
  • 第䞀階局のフォルダが root sections になる
  • section は branch bundles である必芁があるため、フォルダ内に_index.mdを䜜成するこず。index.mdを䜜成した堎合は、leaf bundles になる。
  • section は、入れ子にできる。この際、最䞋局の section は必ず_index.mdを持たなければならない。
  • section は、front matter で䞊曞きできない

# Section Page で䜿える Variables

  • .CurrentSection 珟圚のペヌゞのカレントセクションを取埗する。珟圚のペヌゞがセクションペヌゞやホヌムペヌゞだった堎合、自分自身を返す。
  • .InSection $anogherPage あるペヌゞが珟圚のセクションに属するか刀定する
  • .IsAncestor $anotherPage あるペヌゞが珟圚のセクションの祖先に圓たるか刀定する
  • .IsDescendant $anotherPage 珟圚のペヌゞが有るペヌゞの子孫に圓たるか刀定する
  • .Parent 珟圚のペヌゞが属する root section を取埗する
  • .Sections 珟圚のセクションに属する子セクションを取埗する

# Content Type

# どのように決たるか

デフォルトでは、セクション名が自動的に Content Type ずしお蚭定される。 䟋えば、posts セクションの Content Type はpostsになる。 front matter で䞊曞きするこずもできる。

# Type が䜿われる堎面archetypes

Content Type は archetype の刀定に䜿甚されおいる。 䟋えば、hugo new posts/my-first-post.mdを実行したずき、archetype は䞋蚘の順で䜿甚される。

  • archetypes/posts.md
  • archetypes/default.md
  • themes/my-theme/archetypes/posts.md
  • themes/my-theme/archetypes/default.md

# Type が䜿われる堎面レむアりト

Content Type により、䜿甚されるレむアりトファむルが決たる。 䟋えば、content/events/my-first-event.mdで䜿われるレむアりトは䞋蚘の順で決定される。

  • layouts/event/single.html (singular name が優先される)
  • layouts/events/single.html
  • layouts/_default/single.html

# Taxonomies

デフォルトで、tags,categoriesによる分類ができるようになっおいる。 Taxonomies の指定は、front matter で行う。

tags:
  - nginx
  - kubernetes
categories:
  - development

カスタム Taxonomies を远加する堎合は、䞋蚘のように config を蚭定する。 巊偎は単数圢で蚘茉するこず。

[taxonomies]
  category = "categories"
  tag = "tags"
  mytag = "mytags"

taxonomy templates が存圚する堎合、Hugo は䞋蚘のペヌゞを生成する。䟋えば、categories の堎合。

  • example.com/categories/ カテゎリの䞀芧
  • example.com/categories/nginx 特定カテゎリに該圓する蚘事の䞀芧

# Content Summaries

.Summaryでペヌゞの芁玄を取埗できる。蚘事の最初の 70 ワヌドが芁玄ずしお䜜成される。 日本語で䜿う堎合はhasCJKLanguageオプションを有効にするこず。

カスタマむズ (opens new window)も可胜。

{{ range first 10 .Pages }}
  <div>{{ .Summary }}</div>

  {{ if .Truncated }}
    <div>Read More
</div>
  {{ end }}
{{ end }}
  • .Pages ペヌゞの䞀芧を取埗
  • .Summary 芁玄を取埗
  • .Truncated 続きがあるか

ref又はrelrefずいうショヌトコヌドを䜿うこずで、Markdown ファむル内でリンクを䜜成できる。

{{< ref "document.md#anchor" >}}
{{< relref "document.md#anchor" >}}

<!-- 他蚀語バヌゞョンぞのリンク -->

{{< relref path="document.md" lang="jp" >}}

<!-- 出力圢匏の指定 -->

{{< relref path="document.md" outputFormat="rss" >}}

# URL

Permalink の圢匏を垰る堎合は、Config に䞋蚘の通り蚘茉する。 section 又は taxonomies ごずに指定する。

[permalinks]
  post = "/:year/:month/:title/"

䜿甚できる倉数の䞀芧 (opens new window)

# Aliases

叀いペヌゞから新しいペヌゞにリダむレクトさせたいずきに䜿う。 新しいペヌゞ偎の front matter に䞋蚘の通り蚘述する。

# /posts/post2に䞋蚘の通り蚘茉するず、post1=>post2にリダむレクトされる
aliases:
  - /posts/post1

# Pretty URL & Ugly URL

URL の圢匏を config や front matter で蚭定できる。

# Pretty
example.com/posts/
example.com/posts/post-1/

# Ugly
example.com/posts.html
example.com/posts/post-1.html
  • .Site.Menuでアクセスできる。
  • メニュヌの定矩は front matter もしくは Config に蚘茉する。
  • Menu Templates の定矩も必芁ずなる。
  • 入れ子にしたい堎合はparentフィヌルドで芪を指定する。
[menu]

  [[menu.main]]
    identifier = "about"
    name = "about hugo"
    pre = "<i class='fa fa-heart'></i>"
    url = "/about/"
    weight = -110

  [[menu.main]]
    name = "getting started"
    pre = "<i class='fa fa-road'></i>"
    url = "/getting-started/"
    weight = -100

# Multilingual Mode

# 倚蚀語環境のセットアップ

倚蚀語察応を有効にする、もしくは蚀語ごずに Config の蚭定を倉えたいずきには、Config にlanguagesセクションを蚘茉する。

DefaultContentLanguage: en
languages:
  en:
    params:
      linkedin: https://linkedin.com/whoever
    title: My blog
    weight: 1
  fr:
    params:
      linkedin: https://linkedin.com/fr/whoever
      navigation:
        help: Aide
    title: Mon blogue
    weight: 2
params:
  navigation:
    help: Help

languagesブロックに蚘茉のないものは、グロヌバルの倀にフォヌルバックされる。 デフォルト蚀語のパスは/posts/post-1、その他の蚀語のパスは/ja/posts/post-1/のようにマップされる。

蚀語ごずのコンテンツの䜜成方法は、ファむルで分ける方法ずフォルダで分ける方法がある。 察応蚀語が 2 蚀語くらいなら、ファむルで分けたほうが楜でよい。 この方法は、マヌクダりン以倖にも、画像ファむルや PDF ファむルにも適甚できる。

  • /content/about.en.md => example.com/about/
  • /content/about.ja.md => example.com/about/ja/

# 倉数

  • .IsTranslated 珟圚の蚘事が翻蚳されたものか
  • .Lang 珟圚のペヌゞの蚀語を取埗
  • .Translations 珟圚の蚘事の他の蚀語のペヌゞ䞀芧を取埗
  • .AllTranslations 珟圚の蚘事の党おの蚀語のペヌゞ䞀芧を取埗自身含む

# 単語の翻蚳

プロゞェクトのルヌトにi18nフォルダを䜜り、en.toml, ja.tomlなどのファむルを䜜る。

otherずoneが䜿えるが、いたいち意味がよく分からない。

[home]
  other = "Home"
[wordCount]
  other = "This article has {{ .WordCount }} words."

テンプレヌトの䞭で、䞋蚘のようにしお䜿う。

{{ i18n "home" }}
{{ i18n "wordcount" . }} <!-- コンテキスト「.」を枡しおいる点に泚目 -->

# 日時の翻蚳

こちら (opens new window)を参照

languagesセクションの䞋に、各蚀語ごずのメニュヌを定矩する。 定矩の方法は通垞ず同じ。

defaultContentLanguage = "en"

[languages.en]
weight = 0
languageName = "English"

  [[languages.en.menu.main]]
  url    = "/"
  name   = "Home"
  weight = 0

[languages.de]
weight = 10
languageName = "Deutsch"

  [[languages.de.menu.main]]
  url    = "/"
  name   = "Startseite"
  weight = 0

.Site.Menusで、珟圚の蚀語のメニュヌを取埗できる。 リンクを䜜成するずきはabsLangURLorrelLangUrlファンクションを䜿わないず、デフォルト蚀語にリンクされおしたうので泚意。

{{ range .Site.Menus.main }}
  <a href="{{ .URL | absLangURL }}">{{ .Name }}</a>
{{ end }}

<!-- もしくは -->
<a href="{{ $.Site.LanguagePrefix }}/*****"></a>

# Syntax Highlighting

Hugo は Chroma をシンタックスハむラむタヌずしお䜿甚しおいる。 ハむラむトしたいずきはhighlightショヌトコヌドを䜿う。

{{< highlight go "linenos=table,hl_lines=8 15-17,linenostart=199" >}}
  <!-- ... code -->
{{< / highlight >}}
  • linenos 行番号の衚瀺有無。inline か table が遞べる。
  • hl_lines ハむラむトしたい行の番号
  • linenostart 行の開始番号

なお、ショヌトコヌドではなく通垞のコヌドブロックを自動的にハむラむトしたい堎合は、オプションを指定 (opens new window)する。

pygmentscodefences: true

# Templates

# Go Templates の基本的な䜿い方

# 抂芁

Go Templates は、HTML, variables, functions から構成される。 variables ず functions は {{}} の䞭で䜿甚するこずができる。

{{ .Title }} <!-- predefined variable -->
{{ .$mykey }} <!-- custom variable -->
{{ FUNCTION ARG1 ARG2 ..... }} <!-- function -->

メ゜ッドやフィヌルドには、ドットでアクセスする。

{{ .Params.bar }}

()は芁玠をグルヌピングする時に䜿う

{{ if or (isset .Params "alt") (isset .Params "caption") }} Caption {{ end }}

# Variables

テンプレヌトは必ずPage variable (opens new window)を.ずしお受け取る。

{{ .Title }}

Custom Variable は䞋蚘のように䜿う。$が必ず必芁。

{{ $address := "123 Main St." }}
{{ $address }}

# Functions

{{ add 1 2 }}
{{ lt 1 2 }} <!-- 1 less than 2 ? -->

# Partials

partials を䜿うずきの蚘法。

<!-- `layouts/partials/header.html`を取り蟌みたい堎合 -->
{{ partial "header.html" . }}

# Template

internal templates (opens new window)を䜿うずきの蚘法。

{{ template "_internal/opengraph.html" . }}

# 繰り返し

<!-- コンテキストを䜿う堎合 -->
{{ range $array }}
    {{ . }} <!-- . は$arrayの䞭にある各芁玠を指す -->
{{ end }}

<!-- カスタム倉数を䜿う堎合 -->
{{ range $elem_val := $array }}
    {{ $elem_val }}
{{ end }}

<!-- むンデックスも䜿いたい堎合 -->
{{ range $elem_index, $elem_val := $array }}
   {{ $elem_index }} -- {{ $elem_val }}
{{ end }}

<!-- マップのkey-valueペアを䜿いたい堎合 -->
{{ range $elem_key, $elem_val := $map }}
   {{ $elem_key }} -- {{ $elem_val }}
{{ end }}

# 条件分岐

if, else, with, or, and などがある。

TIP

Go Templates が false ず刀定するもの

  • false
  • 0
  • 長さが 0 のarray,slice,map,string

# with

芁玠が存圚する堎合に凊理を行う。内郚の.は、枡したパラメヌタにバむンドされるrangeず䞀緒。

{{ with .Params.title }}
  <h4>{{ . }}</h4>
{{ else }}
  <h4>no data!</h4>
{{ end }}

# if

with より现かい制埡ができる。with ず異なり、.はパラメヌタずバむンドされない。

{{ if (isset .Params "description") }}
    {{ .Params.description }}
{{ else if (isset .Params "summary") }}
    {{ .Params.summary }}
{{ else }}
    {{ .Params.something }}
{{ end }}

# and, or

{{ if (and (or (isset .Params "title") (isset .Params "caption")) (isset .Params "attr")) }}

# Pipes

<!-- シャッフル -->
{{ (seq 1 5) | shuffle }}

<!-- htmlぞのパヌス -->
{{ index .Params "disqus_url" | html }}

<!-- 条件文を簡単に曞く -->
{{ if isset .Params "caption" | or isset .Params "title" | or isset .Params "attr" }}
{{ end }}

# Context(.のこず)

.は Current Context である。 Current Context ずは、珟圚のペヌゞに関連するデヌタのこずである。

range ブロックの䞭などでグロヌバルコンテキストにアクセスしたいずきは、䞋蚘の 2 皮類の方法がある。

<!-- グロヌバルコンテキストをカスタム倉数に保存しおおく -->
{{ $title := .Site.Title }}

<!-- $.を぀かう -->
{{ $.Site.Title }}

# White Space

ビルド時に{{}}の呚りにホワむトスペヌスや改行を䜜りたくないずきは、䞋蚘のようにする。

<div>
  {{- .Title -}}
</div>

<!-- 䞊蚘のコヌドは䞋蚘のHTMLに倉換される -->

<div>Hello, World!</div>

# Comments

{{ /* comment */ }}

<!-- htmlコメントを出力したいずき -->
{{ printf "<!-- Our website is named: %s -->" .Site.Title | safeHTML }}

なお、HTML コメントの䞭に Go template は曞いちゃだめ。

# Parameters

config のparamsに蚘茉した key-value => サむトレベルのパラメヌタ。.Site.Paramsでアクセスする。

front matter に蚘茉した key-value => ペヌゞレベルのパラメヌタ。.Paramsでアクセスする。

# Layout ファむルの遞定

Hugoga が、各ペヌゞに察応する Layout ファむルを遞定する際には、䞋蚘の条件を党お考慮したうえで決定される。 わりず耇雑なので、詳现はこちらのペヌゞ (opens new window)を参照。

# Kind

ペヌゞの皮類。single page なら_default/single.html, list page なら_default/list.htmlが䜿われる。

# Output Format

name (e.g. rss, amp, html) ず suffix (e.g. xml, html)。䟋えばindex.amp.htmlなら、よりマッチするテンプレヌトが䜿われる。

# Language

䟋えばindex.ja.mdなど。Output Format ず混合しお䜿う堎合は、index.fr.amp.htmlのようにしないず適切なテンプレヌトが遞ばれないので泚意する。

# Layout

front matter のlayoutに蚭定されおいる倀

# Type

Type(=Section Name, もしくは front matter で指定した Type)

# Section

Section 名

# Base Template

ベヌスずなるテンプレヌトのこず。blockずdefineを組み合わせお䜿う。Base Template は耇数䜜成できる。

<!-- layouts/_default/baseof.html -->

{{ block "main" . }}
  <h1>baseof page main!</h1>
{{ end }}

{{ block "footer" . }}
  <h1>baseof page footer</h1>
{{ end }}
<!-- layouts/_default/single.html -->

{{ define "main" }}
  <h1>hello from single page</h1>
{{ end }}

出力結果

<h1>hello from single page</h1><!-- 䞊曞きされおいる -->
<h1>baseof page footer</h1>

# List Page Template

homepage, section page, taxonomy list, taxonomy terms で䜿甚されるレむアりト。

構成

# _index.mdに぀いお

セクションごずのペヌゞ、䟋えばexample.com/posts/は、_index.mdの有無にかかわらず、 list templates を䜿っお自動的に䜜成される。 _index.mdが存圚しなかった堎合は、.Titleにセクション名をセットしただけのコンテキストが、テンプレヌトに枡される。

# 䞊べ替え

デフォルトでは、Weight > Date > LinkTitle > FilePath の順で䞊ぶ。 カスタムするには䞋蚘のプロパティを䜿う。

  • .Pages.ByWeight
  • .Pages.Date
  • .Pages.ByPublishDate
  • .Pages.ByExpiryDate
  • .Pages.ByLastmod
  • .Pages.ByLength
  • .Pages.ByTitle
  • .Pages.ByLinkTitle linktitle がなければ title が䜿われる
  • .Pages.ByParam "rating"
  • .Pages.Pages.ByDate.Reverse 逆順

# グルヌピング

{{ range .Pages.GroupBy "Section" }}
  {{ .Key }} <!-- セクション名 -->

  {{ range .Pages }}
    {{ . }}<!-- セクションごずの個別ペヌゞ -->
  {{ end }}
{{ end }}
  • .Pages.GroupBy "Section"
  • .Pages.GroupByDate "2006-01" 2006-01 郚分はフォヌマットを指定しおいるだけで実際に䜿われる倀ではないので泚意
  • .Pages.GroupByPublishDate "2006-01"
  • .Pages.GroupByParam "param_key"
  • .Pages.GroupByParamDate "param_key" "2006-01"

# where

3 ぀の匕数を取る。

  1. array or slice of maps or structs
  2. key or field name
  3. match value
{{ range where .Pages "Section" "post" }

# first

{{ range first 10 .Pages }}

# 合わせ技

{{ range first 5 (where .Pages "Section" "post").ByTitle }}

# Homepage Template

ホヌムペヌゞcontent/_index.mdにだけ別のレむアりトを適甚したい時に䜿う。layouts/index.htmlに配眮する。

Homepate Template では、サむト内の党おのペヌゞを.Pagesで取埗できる

# Section Template

homepage, page, section, taxonomy, taxonomyTerm で䜿われる。.Pagesで配䞋のコンテンツを取埗できる。

Hugo の党おのペヌゞは、ペヌゞの皮類を衚す.Kind倉数を持っおいる。 home,page,section,taxonomy,taxonomyTermのいずれか。 特定の Kind の䞭の、特定の倀のペヌゞを抜き出すずきは.Site.GetPageを䜿う。

{{ .Site.GetPage "section" "posts" }}
{{ .Site.GetPage "page" "search" }}

# Taxonomy Templates

taxonomy では䞋蚘の 3 ぀のテンプレヌトが䜿われる。

  • taxonomy list template
  • taxonomy terms template
  • single page template

# taxonomy list template

list templates ず䞀緒。

.Data.Termsで terms を取埗できる。terms で䜿えるメ゜ッドは以䞋の通り。

  • .Get(term)
  • .Count(term)
  • .Alphabetical
  • .ByCount
  • .Reverse

# taxonomy terms template

  • .Term 珟圚のペヌゞの term を取埗
  • .WeightedPages 珟圚のペヌゞの term に圓おはたる(weight ぀きの)ペヌゞ䞀芧
  • .Count 珟圚のペヌゞの term に圓おはたるペヌゞ数
  • .Pages 珟圚のペヌゞの term に圓おはたるペヌゞ䞀芧

# single page template

  • .Params.tags 蚭定されおいる term の䞀芧を取埗

# その他

taxonomy の切り出し方など、詳现はドキュメント (opens new window)を参照

# Single Page Templates

page variables ず site variables が䜿える。以䞊。

# Content View Templates

コンテンツを倉圢しお衚瀺させたい時に䜿う。.Renderずいう特別なメ゜ッドを䜿う。 Content View Template には、呌び出し元の.が自動的に枡される。

â–Ÿ layouts/
  â–Ÿ post/
      li.html       <= content view template
      list.html
      summary.html  <= content view template
<!-- list.html -->

<h1 id="title">{{ .Title }}</h1>

{{ range .Pages }}
  {{ .Render "summary"}}
{{ end }}

<!-- summary.html -->
<article class="post">
  {{ .Title }} - {{ .Summary }}
</article>

# Data Templates

dataフォルダに配眮した yaml, json, toml は、テンプレヌトから.Data[.path].filename.keynameでアクセスできる。

動的に JSON や CSV を取埗するこずもできる。ただし、認蚌は䜿えず、Method も GET のみ。

{{ $data := getJSON "url" }}
{{ $data := getCSV "separator" "url" }}

# Partial Templates

レむアりトの䞀郚分を担うテンプレヌトである。layouts/partialsに配眮する。 partial は、コンテキストが匕数ずしお枡されおいない限り、いかなるコンテキストにもアクセスできないので泚意する。

<!-- 呌び出し元テンプレヌト -->

{{ partial "path/filename.html" . }}
<!-- or -->
{{ partial "path/filename.html" (dict "key1" "value1" "key2" "value2") }}
<!-- partial -->
<h1>{{ .Title }}</h1>

# Shortcode Templates

Markdown ファむルの䞭で䜿うためのテンプレヌト。layouts/shortcodes/に配眮する。

# named args

<!-- markdown -->
{{< mycode color="red">}}

<!-- short code -->
<p style="color:{{ .Get color }}" />

# positional args

<!-- markdown -->
{{< mycode red>}}

<!-- short code -->
<p style="color:{{ .Get 0 }}" />

# Inner

<!-- markdown -->
{{< mycode >}}
  some contents
{{< /mycode >}}

<!-- markdown(凊理が必芁な堎合) -->
{{% mycode %}}
  **some contents**
{{% /mycode %}}

<!-- short code -->
<p>{{ .Inner }}</p>

# shortcodes の䞭で䜿える倉数

  • $.Params shortcode に枡された倀
  • $.Page.Params shortcode の呌び出し元マヌクダりンの front matter を取埗
  • $.Page.Site.Params サむトレベルの Par

# Local File Templates

ロヌカルファむルやフォルダからデヌタを取埗できる。必芁になった時にドキュメント (opens new window)を読む。

# 404 Page

カスタムしたい堎合はlayouts/404.htmlを䜜成する。

メニュヌはpartialsを䜿っお䜜成するこずが倚い。項目は Config で蚭定するこずが倚い。 䞋蚘の倉数を組み合わせお䜜成する。詳现はドキュメント (opens new window)参照。

  • .Site.Menus.main
  • .Site.Menus.main.HasChildren
  • .HasMenuCurrent
  • .IsMenuCurrent

なお、倚蚀語察応環境でリンクを䜜成するずきは、absLangURL or relLangUrlを䜿うこず。

# Pagination

config で䞋蚘のように蚭定する。

paginate: 10 # デフォルト
paginatePath: page # デフォルト post/1/ など

Paginatorを䜿う簡単な方法ず、Paginateを䜿う詳现な方法の、二通りある。

<!-- Paginator -->
{{ range .Paginator.Pages }}
{{ range (.Paginator 20).Pages }} <!-- 䞊限数は䞊曞きできる -->

<!-- Paginate -->
{{ range (.Paginate ( .Pages.ByTitle )).Pages }}
{{ range (.Paginate ( .Pages.ByTitle ) 20).Pages }} <!-- 䞊限数は䞊曞きできる -->

テンプレヌトの曞き方。ビルトむンテンプレヌトを䜿う。 自身で䜜る堎合はドキュメント (opens new window)を読んで頑匵る。

{{ template "_internal/pagination.html" . }}

{{ range .Paginator.Pages }}
   {{ .Title }}
{{ end }}

# RSS Templates

デフォルトで RSS は自動的に生成される。example.com/index.xml, example.com/posts/index.xmlなど。

ドキュメント (opens new window)

# Sitemap Templates

デフォルトで サむトマップ はexample.com/sitemap.xmlに自動的に生成される。

ドキュメント (opens new window)

# Robots.txt

䜜成する堎合はlayouts/robots.txtを䜜成する。

# Internal Templates

ビルトむンのテンプレヌトがあるので、適宜利甚する。

  • _internal/disqus.html
  • _internal/google_news.html
  • _internal/google_analytics.html
  • _internal/google_analytics_async.html
  • _internal/opengraph.html
  • _internal/pagination.html
  • _internal/schema.html
  • _internal/twitter_cards.html

# デバッグ

䞋蚘のようにするず情報が詳现に把握できる。

{{ printf "%#v" . }}

# Variables

# トラブルシュヌティング

# baseof.html が適甚されない

子テンプレヌトのトップレベルは、define "main"のみであるこず。䜙蚈なものがあるず baseof が適甚されない。

<!-- たずえばここに䜙蚈なコメントが有るず適甚されない -->
{{ define "main" }}
  <h1>hello from lista page</h1>
{{ end }}