メインコンテンツへスキップ

【HUGO】Blowfishのインストールと実装で失敗したこと

さしし
著者
さしし
GenAIは友達さ
目次

Blowfishのインストールから詰まる
#

プログラム系はマジで、インストールのチュートリアル(説明書)はよく読もうと思いましたまる。

Installation · Blowfish

HUGOのテーマをインストールする方法は、新しく作成したサイトのthemesフォルダにgit clone {リポジトリのURL.git} themes/{テーマ名}するのがほとんど。PaperModも他で試したのもそうだったから、Blowfishのリポジトリをクローンして、ビルドしてhugo serverではいページ表示され……あ?

……なんか違くね?

トップページが404だしcontentsに入れても反応しない。なんでやと「Installation」をみたら、Blowfish Toolsをインストールするみたいに書かれている。

npx blowfish-tools

んでビルドがblowgish-tools new サイト名とあるから、これもうHUGOと別物やんってなった。これでサイトフォルダが作成されて、serverコマンドでサンプルページが表示されたので成功。

HUGOでnew siteした後に再度新しく作成したものだから、別々のツールで作成した同じ名前のフォルダが階層になって不思議なことに。消して再度やればいいものの、toolsで作成したフォルダだけCursorで読ませればいいやと放置。

日本語設定したら英語と喧嘩した
#

テーマインストール後はconfigフォルダにサイトの設定ファイルが作成される。

config/_default/
├─ hugo.toml
├─ languages.en.toml
├─ markup.toml
├─ menus.en.toml
├─ module.toml
└─ params.toml

実際にいじるのは「hugo・languages.en・menus・params」くらい。コード見ればどこの何をアクティブにするかは、サンプルページとにらめっこすればわかりやすい。

デフォルトでは、メニュー・ToCがアクティブになってなく、言語コードをjaに変えるとかぽちぽちしていく感じ。

……でも、言語をjaに統一していったら、「languages.en.toml」のen部分と喧嘩して、「languages.ja.toml」を作成するはめになった。もともとHUGOに多言語切替に対応しているから、言語コードが複数設定されていると、言語ごとのページを生成するから、とても面倒なことになる。

Cursorに泣きついたら、hugo.tomlに次のコードを加えることで、言語関連のエラーは解消された。

[languages]
  [languages.ja]
    languageName = "Japanese"
    weight = 1
    title = "your site name"
    languageCode = "ja"

言語干渉エラーは解決したけど、設定はjaだけのはずなのに、「enのページを作っといたぜ!」みたいになったから、コンテンツが有るのと無いのでスイッチされる感じに。

これを解決したのは、languages.en.tomlをlanguages.ja.tomlにリネームすることだった。ただファイルをリネームするだけだと、パラメータ参照でファイル名指定していたらくっそ面倒なことになりそうだから、AIにリネームとコード整合を頼んだけど、リネームだけでもなんとかなるっぽい。

この修正が面倒なら、「enとjaを共存」させて、マルチリンガルにするほうが手っ取り早いまである。その方がグローバルなSEO対策になるとはいえ、いちいち日本語版と英語版の2種類ページを作成するのはだるいので、日本語に統一。

カテゴリーはフロントマターだけでいい
#

PaperModはカテゴリーごとにフォルダを作成したけど、Blowfishはフロントマターにcategories: ["cate1", "cate2", ...]で複数いけるし、自動的にフォルダを作成して記事が格納される。

複数カテゴリーでも親を指定したいなら、タクソノミーを設定する必要があり、hugo.tomlにそれがある。

[taxonomies]
  tag = "tags"
  category = "categories"
  author = "authors"
  series = "series" # ここまでデフォルト
  parent = "parent"
---
title: "記事タイトル"
categories: ["cate2", "cate3", "cate1"]
parent: "cate1" # 親カテゴリをcate1に指定
---

or

---
title: "記事タイトル"
categories: ["cate1/cate2/cate3"]
---

コンテンツが多い大規模サイトなら、URLパスで階層を指示したほうが楽。複数管理でカテゴリー指定の間違いを無くすなら、parentで親を指定したほうが事故は少なくなる感じ。

ウチは今のところ複数カテは想定にないから、単一カテで楽。ただSEO的には、タグよりもカテゴリーで記事内容とフォルダ名を関連付けたほうが有利になるから、親カテゴリーの話題だけは決めておいたほうがいい。

画像置き場はドコ?
#

記事内リンク画像とプロフィール画像は「assets/img」にぶち込む。記事に表示するパスは「img/ファイル名.png」に。プロフィール画像は「profile.png」にすれば自動的に。

ファビコン系と任意で背景画像は「static」に。もともと適用されている画像ファイル名と同じにしてぶち込めばOK。

  • favicon.ico
  • favicon-16x16.png
  • favicon-32x32.png
  • apple-touch-icon.png
  • android-chrome-192x192.png
  • android-chrome-512x512.png

特に設定しないと一生青ふぐが表示される。

最後に:参考にしたページとか
#

なんだかんだで、Blowfishの公式ドキュメントを見ながらインストール~~実装にパラメータ設定するのが妥当。

Blowfish

HUGOの最新バージョンだと「互換ムリ」といわれてダウングレードした経緯もあるので、推奨されているverでインストールしておいたほうがいいかも。