前々よりテーマを作りたいと思っていましたが,気が向いたので作ってみました.
hugo-theme-harusame
安直な名前です笑
ソースは
https://git.haru3.me/haru/hugo-theme-harusame
に置いてありますので,使ってもらえると喜びますし,テーマを製作する際の参考にして頂ければと思います.
使う人居ないとは思いますが,備忘録的に設定方法書いておきます.
|
|
[Params]
にてプロフィールの項目を操作します.biohtml
はsafeHTMLとしてある為タグを使えます.
指定しなかった項目は要素が作成されません.
上のナビゲーションにある項目は[Menu.main]
にて定義します.
複数追加すると全て表示されます.
自分の為に作ったので自由度はこのぐらいです…
使いたい時はテーマ自体をカスタマイズして下さい.笑
なお,作る際にはこのページを大変参考にさせて頂きました.
https://retrolog.io/blog/creating-a-hugo-theme-from-scratch/
躓いた点
Paginatorをheadから扱いたい
canonical要素にきちんとページを含めたURLを指定したかったのですが,.Permalink
では取得できませんでした.
そこで,Paginatorが存在する時はPaginator.URLで取得するようにしました..
https://tekki-tipps.de/en/hugo-multiple-pagination/
このページが参考になりました.
私のテーマでは,baseof.htmlを
|
|
としてあり,ホーム要素,もしくはカテゴリ等のページでは無い要素にてPaginateを行うようにしました.
こうすることでhead.htmlから参照可能になります.
|
|
Syntax Highlighterが崩れる
よくMarkdownのコード要素を使っていたのですが,どうもwidthを守ってくれないようです.
で,CSSでdiv.highlight
にてwidth: 100%
にしてみたところ,confファイルのみ効いていない事が判明.
見てみるとここではlighlightクラスではなかっった…
というわけで,CSSにてダーティハックをしております.多分言語によってはまた対応が必要だと思う.
|
|
モバイルとデスクトップの切り替え
最初はCSSでうまいことやりたかったのですが,良い案が浮かばなかったのでjsでやりました.
具体的には,コンテナをflexで作成し,一定のinnnerWidth以下だと並びを縦にしています.
クソコードなので気になる人はstatic/js/harusame.jsを見てくれ…
おわりに
いざ書こうと思ったら浮かばないな… 結構時間掛かったんですけどね.
ところで,下部のナビゲーションどうですか.結構気に入ってるんですけど笑