Skip to main content

常にいまいち

HugoへのGoogle Analyticsの埋め込み

Hugoには標準でGoogle Analyticsを組み込む機能があるため、以下の手順で設定すればOK まとめ config.toml に googleAnalytics としてトラッキングIDを設定 テンプレート内に以下のどちらかの手段でトラッキング用のコードを埋め込む 既存のどちらかのテンプレートを使用する _internal/google_analytics.html _internal/google_analytics_async.html .Site.GoogleAnalytics という変数を使って自力で設定する トラッキングIDの設定 config.tomlに以下の内容を追記する googleAnalytics = "UA-155249985-1" トラッキング用のJSの設定 使用しているテーマによっては既に登録されている可能性があるため、 googleAnalytics を設定したらまず一度サイトの挙動を確認する。 既にanalytics用のコードが埋め込まれてアクセスが発生しているようなら以降の作業は不要。 テンプレートに以下のどちらかのテンプレートを追加する。 {{ template "_internal/google_analytics.html" . }} {{ template "_internal/google_analytics_async.html" . }} .Site.GoogleAnalytics という変数がconfig.tomlに設定されたトラッキングIDを持っているため、これを使って自力でコードを書いても良い。

GitHub Actionsを使ってHugo製のサイトをデプロイする

このactionを使えば難しいことはない。 getting-startedに書いてあることをそのまま実施すればOK。 今のこのサイトでは master ブランチを公開する設定にしているため、 source ブランチに生成元のコードを作成し、それらをもとにHugoで生成したファイルを master ブランチに展開している。 そのための設定は以下のようになる。 トリガーとなるブランチの変更 on: push: branches: - - master + - source jobs: build-deploy: デプロイ先のブランチの変更 uses: peaceiris/actions-gh-pages@v2 env: ACTIONS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }} - PUBLISH_BRANCH: gh-pages + PUBLISH_BRANCH: master PUBLISH_DIR: ./public 通常のgitの運用フローとかなり異なるため、 気に入らないようであれば外部レポジトリへのデプロイ機能を使ってページの生成元コード群と、公開ページのレポジトリを分けてしまっても良いだろう。

JSON APIのバグ修正

前回の記事の内容ではコンテンツにダブルクォーテーションなどのエスケープが必要な文字が入った場合にJSONとして不適切なレスポンスになるため修正する。 解決策 item.json.json を以下のように修正する {{- dict "title" .Title "date" .Date "draft" .Draft "content" .Content | jsonify -}} 問題点 元々のitem.json.jsonでは、元データを変換せずにそのままレンダリングしてしまっていることが原因のため、何らかのエスケープを行えば解決する。 今回は以下のページを参考に、dictを作成してjsonifyで変換することにした。 https://gohugo.io/functions/jsonify/#readout https://knooto.info/hugo-snippets/#json%E5%87%BA%E5%8A%9B https://blog.8-p.info/ja/2018/05/26/hugo-json/

Hugo as JSON API

やりたいこと Hugoでブログを始めたものの、JSONでコンテンツをみることができると嬉しいので方法を調べてみた。 ビルドに使用しているのはMac上のHugo(Hugo Static Site Generator v0.62.0/extended darwin/amd64) 参考URL https://forestry.io/blog/build-a-json-api-with-hugo/ やったこと config.tomlにoutput formatを追加 以下の内容を追加。HTMLのページ自体はそのまま残したいのでHTMLとJSONを指定する。 [outputs] home = ["HTML", "JSON"] section = ["HTML", "JSON"] page = ["HTML", "JSON"] テンプレートを作成 layouts/_default 配下に以下のファイルを作成する。 ファイル名は {pageKind}.{outputFormatName}.{extension} という形式になる。今回は outputFormatName=json、 extension=jsonとなるので、JSON形式の出力の共通部分を記述した baseof、リスト表示用の list、単体表示用の single、それらの中で表示する1要素を表すための itemの4つを作成する。 baseof.json.json item.json.json single.json.json list.json.json layouts/_default/baseof.json.json { "data" : {{ block "response" .}}{{ end }} } このブログのJSONレスポンスは全てdata プロパティとして response ブロックをレンダリングして返す。 各 pageKindでは responseを定義する。 layouts/_default/item.json.json { "title": "{{ .Title }}", "date": "{{ .

First Post

ブログを放置しっぱなしだったので作り直してみる。 とりあえず手っ取り早くできる hugo + Github Page で作り直した。