これはなに
HugoのStack テーマを利用するにあたり、“config.yaml"などテーマに関連する設定を変更した。もう一度サイトを構築する際絶対に忘れているため、記録を残しておく。
本文で示す変更箇所は下記のとおりである。
- サイト情報
- 画像
- サイトのリンク
- 外部リンク
- Widgets
- Google Analytics
- 言語
- 多言語対応に関する設定
- コメント機能の無効化
- OpenGraphの設定
- フォント
- フッター
- コードブロックの設定
- コードブロックのカスタマイズ
- default.mdのアレンジ
サイト情報の変更
baseurl
をサイトのHomeのURLに変更するtitle
とdescription
をオリジナルのものに変更するfooter
に表示されるサイトの設立年を変更するsidebar
の絵文字やサブタイトルを変更する
baseurl: https://nakureis-notes.netlify.app
title: NakuRei's Notes
description: meta descriptionだよ
params:
# ...
footer:
since: 2022
sidebar:
compact: false
emoji:
subtitle: サブタイトル
# ...
画像の変更
avatar画像とfaviconを作成1し、パスを指定する。
Stackテーマでは、avatar
でlocal
をtrue
にし、assets\
以下に画像を配置すると、サイズを自動で変更してくれる。
assets/img/avatar.png
にオリジナルの画像(150×150px)をオリジナルのものに変更する- あるいは
avatar.enabled
をfalse
にする
- あるいは
static/img/favicon.png
を作成し、“config.yaml"にリンクを設定する
params:
# ...
sidebar:
# ...
avatar:
enabled: true
local: true
src: img/avatar.png
favicon: /img/favicon.png # e.g.: favicon placed in `static/favicon.ico` of your site folder, then set this field to `/favicon.ico` (`/` is necessary)
サイトのリンクの変更
permalinks
を変更すると、baseurl
以降の各記事のリンクを変更できる。
permalinks:
post: /post/:slug/
page: /:slug/
外部リンクの変更
左サイドバーにあるGitHubやTwitterなどのリンクを変更する。
menu:
# ...
social:
- identifier: github
name: GitHub
url: https://github.com/NakuRei
params:
icon: brand-github
- identifier: twitter
name: Twitter
url: https://twitter.com/nakurei7901
params:
icon: brand-twitter
Widgetsの変更
サイトの右サイドバーに表示される情報を変更する。widgetは記述順に描画される。
params:
# ...
widgets:
homepage:
- type: search
- type: categories
params:
limit: 10
- type: tag-cloud
params:
limit: 10
- type: archives
params:
limit: 5
page:
- type: toc
- type: categories
params:
limit: 10
- type: tag-cloud
params:
limit: 10
Google Analyticsの設定
Google Analytics
でアカウントを作成し、Webストリームを作成する。その後、作成したストリームの測定IDをgoogleAnalytics
に書き込む。
googleAnalytics: G-XXXXXXXXXX
言語の変更
RSS出力に付与する文字コードlanguageCode
を日本語にする。
languageCode: ja
DefaultContentLanguage
も日本語にする。これにより言語指定のないindex.mdがすべて日本語の記事として取り扱われる2。また、これに伴いhasCJKLanguage
をtrue
にする。これによりHugo内部の変数.Summaryと.WordCountが正しく動作するようになる。
DefaultContentLanguage: ja
hasCJKLanguage: true
多言語対応に関する設定の変更
languages
を設定すると、サイトを多言語対応させ、言語ごとに各設定を変更できる。下記の例では、言語ごとにサイトタイトル、サブタイトル、meta descriptionを変更している3。
languages:
ja:
languageName: 日本語
title: NakuRei's Notes
description: meta descriptionだよ
weight: 1
params:
sidebar:
compact: false
emoji: 🐦
subtitle: サブタイトル
avatar:
enabled: true
local: true
src: img/avatar.png
en:
languageName: English
title: NakuRei's Notes
description: Example description
weight: 2
params:
sidebar:
compact: false
emoji: 🐦
subtitle: Sub title
avatar:
enabled: true
local: true
src: img/avatar.png
コメント機能の無効化
個人的にコメント機能は必要性を感じないので無効化する。
params:
# ...
comments:
enabled: false
OpenGraphの設定
opengraph
のtwitter.site
に自分のTwitterアカウントのアカウント名(@
は除いたもの)を書く。
twitter.card
では、Twitterで記事がシェアされるときの、カードのスタイルを変更できる。StackのOpenGraphの設定
ではsummary
とsummary_large_image
が選べる。好みなほうに変更する。
params:
# ...
opengraph:
twitter:
# Your Twitter username
site: nakurei7901
# Available values: summary, summary_large_image
card: summary_large_image
フォントの変更
Stackの標準では中国語のフォントが使われるため、これを日本語フォントに変更する。今回はZen Maru Gothic を適用する。ついでにコードブロックのフォントにRicty Diminished を追加する。
layouts/partials/head/
にcustom.html
を作成し、下記を記入する。
|
|
Stackでは、フォントがthemes/hugo-theme-stack/assets/scss/variables.scss
にCSS変数で定義されている。
たとえば、記事本文のフォントは--article-font-family
で定義されている。記事のタイトルや記事カード、サイドメニューなどのフォントは--base-font-family
に定義されている。よって、これらに日本語フォントを加えれば、記事が日本語フォントで表示されるようになる。
また、コードブロックのフォントは--code-font-family
で指定されている。そのため、これに"Ricty Diminished"を加えている。
script
には、Google Fonts
から"Zen Maru Gothic"フォントを持ってくるためのコードを書いている。
フッターの変更
Stackのデフォルトでは、フッターの著作権表示がサイトのタイトルになっている。個人的にはここを著者名にしたかったため、フッターをカスタマイズする。
フッターをカスタマイズするには、/layouts/partials/footer/
直下にfooter.html
を作成し、そこにカスタマイズ内容を書き込む。
Hugoではテーマよりも自作ファイルのほうが優先されるため、カスタマイズしたフッターがテーマよりも優先して利用される。
まず、“config.yaml"にauthor
の情報を追記する。
author:
name: Rei Naku
次に、もともとテーマに組み込まれているフッターをサイトにコピーする。
cp ./themes/hugo-theme-stack/layouts/partials/footer/footer.html ./layouts/partials/footer/
その後、コピーした"footer.html"を開き、{{ .Site.Title }}
を{{ with $.Site.Author.name }} {{.}} {{end}}
に変更する。
|
|
これで、著作権表示をサイトのタイトルから著者名に変更できる。
ちなみに、Stackテーマの著作権表示は削除しないようにする。 公式ページにも下記の文言がある。
“Please do not remove the “Theme Stack designed by Jimmy” text and link.”4
コードブロックの設定
デフォルトで行番号が表示されないように、“config.yaml"でlineNos
をfalse
にする。この設定のとき、行番号を表示したい場合は{linenos=true}
をコードブロックに追加すると表示できる。
markup:
# ...
highlight:
# ...
lineNos: false
コードブロックのカスタマイズ
コードブロックでファイル名が表示されるように変更する。
ここでは、Hugo v0.93.0から使えるRender Hooks for Code Blocks を利用する。これを利用すると、Markdown Syntaxを利用したまま、コードブロックのスタイルをカスタマイズできる。
カスタマイズは、layouts/_default/_markup/
に"render-codeblock.html"を作成して、そこにカスタマイズ内容を書き込めば良い。言語によってスタイルを変えたい場合は、“render-codeblock-bash.html"のように、ファイル名の後ろに言語名を付ける。
たとえば、ファイル名をname
で渡す場合、下記のようにカスタマイズする。
|
|
{ }
で渡した変数は、.Attributes.変数名
で受け取れる。{{ with $name }} ... {{ end }}
で囲うことで、$name
がある場合のみファイル名を表示するようにしている。
コードブロックの内容は.Inner
で受け取れる。これをhighlight
関数に渡すことで、コードをハイライト表示にできる。また、Hugoの機能でコードブロックに指定できる変数(e.g. hl_lines, linenostart)5は.Options
に格納される。これをhighlight
関数の第3引数に渡すと、デフォルトのコードブロックと同様にオプションを指定できる。
表示部分にクラスを指定し、CSSを書けば表示スタイルも変更できる。たとえば下記のようなスタイルを指定すると、下図のようなスタイルでファイル名を表示できる。
|
|
default.mdのアレンジ
新しい記事は"archetypes/default.md"に基づいて作成されるため、“archetypes/default.md"をアレンジすると記事を作りやすくなる。
個人的に使っている設定は下記の通り。
---
title: {{ replace .Name "-" " " | title }}
description:
slug: {{ replace .Name "-" " " | title }}
date: {{ .Date }}
categories:
tags:
image:
math: false
license:
hidden: false
comments: false
draft: true
---
## これはなに
## 参考文献・URL
参考文献・URL
- Custom Header / Footer | Stack
- HUGO の Code Block Render Hooks を使って、コードブロックにファイル名を表示する | ひよこまめ
- Markdown Render Hooks | Hugo
- Syntax Highlighting | Hugo
ファイル名をindex.en.mdとすれば、英語の記事として取り扱われる。 ↩︎
sidebar
のsubtitle
を変更するのにsidebar
のパラメータをすべて記述しているが、こうしないとsidebar
のパラメータが正常に動作しない。 ↩︎Stack | Card-style Hugo theme designed for bloggers (2022/11/19閲覧)より引用。 ↩︎
詳細はSyntax Highlighting | Hugo を参照。 ↩︎