Theme を利用する

前々回前回とちょっと飛ばしすぎたので今回は軽めに theme の話題を。

Hugo の Theme

Hugo には theme 機能がある。 Theme 機能の利点はもちろん画面の構成等を共有できる点にある。 また複数人で作業している場合は theme として構成を管理することで作業環境を統一できる利点もある。

Hugo の repository には既に多くの theme が寄せられている。

また repository に登録されているもの以外にも色々なテーマが公開されているようである。

Theme をインストールして利用する

Theme を利用するには作業環境上に repository を git clone する。

C:\hugo-env\www>git clone --recursive https://github.com/gohugoio/hugoThemes.git themes

この repository ではユーザが公開している theme を git の submodule として結合しているため, --recursive オプションを付けて clone する。 現時点(2015年9月)で56個の theme が登録されているようである。

また単独の theme をインストールする場合は,作業環境に themes フォルダを作り,その下に theme の repository を clone する

C:\hugo-env\www>git clone https://github.com/spiegel-im-spiegel/hugo-theme-text.git themes/hugo-theme-text
Cloning into 'themes/hugo-theme-text'...
remote: Counting objects: 174, done.
remote: Compressing objects: 100% (133/133), done.
Receiving objecemote: Total 174 (delta 82), reused 123 (delta 35), pack-reused 0
Receiving objects:  49%
Receiving objects: 100% (174/174), 25.34 KiB | 0 bytes/s, done.
Resolving deltas: 100% (82/82), done.
Checking connectivity... done.

Theme を使ってビルドする場合には -t または --theme オプションを使って theme 名を指定する。 Theme 名は themes フォルダ直下のフォルダ名である。

C:\hugo-env\www>hugo --theme="html5"
0 draft content
0 future content
1 pages created
0 paginator pages created
2 tags created
1 categories created
in 72 ms

また config.toml に theme 名を記述する方法もある(ただしコマンドライン・オプションのほうが優先される)。

baseurl = "http://hello.example.com/"
languageCode = "ja"
title = "Hello World!"
theme = "html5"

Theme を作成する

もちろん Theme は自身で作成することもできる。 作成するには hugo new theme コマンドを使う。

C:\hugo-env\www>hugo new theme sample-theme

C:\hugo-env\www>tree /f .
C:\HUGO-ENV\WWW
│  .editorconfig
│  .gitignore
│  config.toml
│  README.md
│
├─archetypes
├─content
│  └─practice
│          hello.md
│
├─data
├─layouts
│  │  404.html
│  │  index.html
│  │
│  ├─practice
│  │      single.html
│  │
│  ├─section
│  │      practice.html
│  │
│  └─_default
│          list.html
│          single.html
│
├─public
│  │  404.html
│  │  index.html
│  │  index.xml
│  │  sitemap.xml
│  │
│  ├─categories
│  │  └─hugo
│  │          index.html
│  │          index.xml
│  │
│  ├─css
│  │      reset.css
│  │      text.css
│  │
│  ├─practice
│  │  │  index.html
│  │  │  index.xml
│  │  │
│  │  └─hello
│  │          index.html
│  │
│  └─tags
│      ├─hello
│      │      index.html
│      │      index.xml
│      │
│      └─world
│              index.html
│              index.xml
│
├─static
└─themes
    └─sample-theme
        │  LICENSE.md
        │  theme.toml
        │
        ├─archetypes
        │      default.md
        │
        ├─layouts
        │  │  index.html
        │  │
        │  ├─partials
        │  │      footer.html
        │  │      header.html
        │  │
        │  └─_default
        │          list.html
        │          single.html
        │
        └─static
            ├─css
            └─js

C:\hugo-env\www>hugo --theme="sample-theme"
0 draft content
0 future content
1 pages created
0 paginator pages created
2 tags created
1 categories created
in 37 ms

いくつかファイルが作成されているが LICENSE.mdtheme.toml 以外は空のファイルである。

LICENSE.md はライセンスファイルで MIT ライセンスの雛形が出力されている。 そのまま使うのであればライセンス発行者の名前を記述する。 他のライセンスを使うのであれば他のファイルに差し替えるなり削除するなりすればよい。

theme.toml には theme の情報を記述する。 初期値は以下のようになっている。

# theme.toml template for a Hugo theme
# See https://github.com/gohugoio/hugoThemes#themetoml for an example

name = "Sample Theme"
license = "MIT"
licenselink = "https://github.com/yourname/yourtheme/blob/master/LICENSE.md"
description = ""
homepage = "http://siteforthistheme.com/"
tags = ["", ""]
features = ["", ""]
min_version = 0.14

[author]
  name = ""
  homepage = ""

# If porting an existing theme
[original]
  name = ""
  homepage = ""
  repo = ""

これに必要な項目を書き込めばいい。

Theme をカスタマイズする

前々回を読んだ方はピンと来ると思うが, theme のフォルダ構成(archetypes, layouts, static)は作業環境のそれとほぼ同じである。 実は theme の構成は作業環境で上書きできる。 従って theme を自サイト用にカスタマイズするのであれば, themes フォルダ内は触らないようにして,作業環境側で上書きするのがスマートである。

拙作 Theme “hugo-theme-text”

今回,このサイトを構築するにあたり,シンプルなテキスト・サイト用の theme を作成・公開した。

次回からはこの theme をベースに説明をしていきたいと思う。

ブックマーク

Hugo に関するブックマークはこちら