logo サブスレッド

Hugoからい

4月1日からふわっと会社ホームページで技術ブログを始めてみました。
平日毎日 その日の担当何か技術に関連する記事 を掲載していきます。そのつもりです。
月曜日を担当するサブスレッドCKO(チーフ経理のお姉さん)こと tama です。よろしくお願いします!

Hugo

弊社のホームページは創業当初友人の会社さんにデザインしてもらったものです。
もともと共通ヘッダを出力するためだけに .php になっているというデザイン会社さん仕様だったので、イマドキの静的サイトジェネレータってことでGo言語製のHugoによる静的HTMLに切り替えました。

なぜHugoか

実行バイナリひとつで済むので導入がお手軽です。
弊社はWebサービスやWebViewアプリ(WebViewを使って画面構成をHTMLに頼ったモバイルアプリ)の開発が多く、その画面デザインをWeb制作会社さんにお願いすることもあるのですが、そのとき上記したような .php でなく .html を出力してもらいたいのでHugoのノウハウを共有するとお互い幸せになれるんじゃ… という思惑があり、導入のお手軽さは重要だったのです。

辛い

結論から言うと、Hugo辛いです…

  • Djangoのテンプレート継承みたいな便利なものはありません。
    • これは継承のテンプレート(superテンプレート)の中に {% block %}{% endblock %} というブロックを定義しておくと、それを継承したテンプレート(subテンプレート)でそのブロック内を上書きできるというものです。
    • Hugoでは {{partial}}{{template}} で部分的なパーツ(partial)を取り込むことはできますが、その部分テンプレートの一部に固有のデータを埋め込むことは困難です
      • pipelineにdictを渡せば多少は調整できますが長文は…困難…
  • Section List のページにパラメタを渡す手段はありません。
    • content/SECTION/index.html を置くと List でなく Single で出力されてしまいます。
    • Node Variablesには任意に設定できる変数は定義されていません。
    • セクションごとに固有の文言を表示したいときは、、 layouts/section/SECTION.html に個々にテンプレートを作るしかないのかしら。(;´д`)トホホ…
  • なんかもっといろいろあったけど忘れました←

じゃHugoの {{define}} - {{template}} ってなんなのよ!? というのはサンプルを作って試してみました。 layouts フォルダ配下にある任意のファイル(拡張子がなんであっても)に書かれた {{define}} が最初に全部定義されるなんて気付かないYO!
こういう使い方するといんでね?というサンプルも作ってみたのでご参考まで。
Shortcodesを上手に使えばテンプレート継承ライクな「したいこと」ができるかもですが未検証です。
Scratchを上手に使えばもっとスマートに書けるかもしれませんが未検証(ry

そこらへんの宿題を残したまま、弊社サイトは、Hugoをあきらめて別の静的サイトジェネレータに乗り換えようかなっt

現在の位置:サブスレッド ホーム > 技術ブログ > Hugoからい