HugoをMainroadをベースにカスタマイズ
Page content
このページについて
自分用(このページ)のカスタマイズ用のメモ。公式ドキュメント及び下記サイト等を参考にさせてもらった。
Hugo によるブログ作成と mainroad テーマのカスタマイズ
自分なりの理解ポイント
公式サイトや解説サイト等にも言及されているのかもしれないが、最初理解しにくかったところや、勘違いしたところを下記に羅列する。
- QuickStartの例では、content/posts配下に記事格納するように説明されているが、あくまでも一例でありContent直下、または任意のディレクトリをつくって利用可能
- Content直下に_index.mdを作成すると、それがトップページになる(逆にPosts等、サブディレクトリ上に_index.mdを作成してもトップページにはならない)
- themeの動作を変更したい場合は、themes内のlayoutがテンプレート相当のファイルなので、同じものを直下のlayout上に作成して変更すると、こちらで上書きすることが可能。
- themeの構成ファイルを直接編集するのに比べてgit pullとかしても変更が保持される
- config.tomlはhugo.tomlに変更された(が、config.tomlに書いても有効のようである)
partitalsとshortcodes
カスタマイズをする上でpartitalsとshortcodesという用語が飛び交うのだが、これらの違いが最初わかりにくかった。
- partitalsはテーマにおけるtemplateの部品。
- partitalsはテンプレート内からは呼び出せるが、コンテンツ(markdown)からは呼び出せない
- shortcodesはテンプレート、コンテンツの両方で呼び出せる
- コンテンツ(markdown)から機能を呼び出す→shortcodesを利用
- テンプレート内で共通的な部品を呼び出す→Partialを利用
- partital内でshortcodesを呼ぶこともできる
- トップページのみに最新記事を掲載(shortcodesで登録し、markdown内から呼び出す)
- すべてのページに関連記事を掲載(partialで作成し、_default/layout/single.htmlから呼び出し)
partialsでやったこと
関連記事の表示は下記のサイトを参考にした。
hugo_dir/layouts/_default/single.html
{{ partial "related.html" . }}
hugo_dir/layouts/partials/related.html
余白用のクラスをいれておいて、カスタムCSS側で調整できるようにした。
{{ $related := .Site.RegularPages.Related . | first 5 }}
{{ with $related }}
<div class="spacer"></div>
<h2>関連記事</h2>
<div class="related">
<ul>
{{ range . }}
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
{{ end }}
</ul>
</div>
<div class="spacer"></div>
{{ end }}
カスタムCSSでやったこと
.container {
max-width: 1800px;
width: 100%;
}
全体の最大幅の拡張。
h1 {
font-size:1.75em;
text-shadow: 2px 2px 2px silver;
margin-top:1em;
margin-bottom: 0.25em;
}
h2 {
margin-top:1em;
margin-left:0em;
font-size:1.5em;
text-shadow: 2px 2px 2px silver;
}
h3 {
margin-left:0.5em;
font-size:1.25em;
text-shadow: 2px 2px 2px silver;
margin-bottom: 0.25em;
}
h4 {
margin-left:1em;
font-size:1.1em;
margin-botom:0.1em;
text-shadow: 1px 1px 1px #feded6;
}
各ヘッダのサイズ調整
pre {
White-space: pre-wrap; /* 折り返す */
margin-left :1.5em;
margin-bottom:2em;
background: linear-gradient(180deg, #22354a 30%, #0F0F2A);
color: #EFFAFF;
padding-top: 0.75em;
padding-left:1em;
padding-bottom :0.75em;
border-color: #0F0F2A;
border-radius: 8px;
box-shadow: 8px 8px 4px #888F9A;
}
pre code {
background: none; /* codeタグの背景をリセット */
display: block;
}
code-block等の設定。折り返し、背景色や角丸等の指定。 後は細々と細かな見た目の設定をおこなっている。