WordPressには、機能拡張の仕組みとしてアクションフックとフィルターフックがあります。
今回は、この2種類のフックをHugoでも実装してみようと思います。

templates.Exists関数の使い方

パーシャルテンプレートを呼び出すとき、パーシャルテンプレートが存在しないとエラーになります。
これを未然に防ぐ関数がtemplates.Exists関数です。

{{ templates.Exists "<TEMPLATE-NAME>" }}

templates.Exists関数は、パーシャルテンプレートが存在するか確認する関数です。
返り値としてブール型を返すため、if文で使用できます。

アクションフックを実装する

アクションフックとは、処理を追加するフックです。

{{ if templates.Exists "<TEMPLATE-NAME>" }}
  {{ partial "<TEMPLATE-NAME>" . }}
{{ end }}

templates.Exists関数で、パーシャルテンプレートが存在するか確認します。
パーシャルテンプレートが存在するときは呼び出して処理を追加します。

フィルターフックを実装する

フィルターフックとは、処理をすり替えるフックです。

{{ if templates.Exists "<TEMPLATE-NAME>" }}
  {{ partial "<TEMPLATE-NAME>" . }}
{{ else }}
  既存の処理
{{ end }}

templates.Exists関数で、パーシャルテンプレートが存在するか確認します。
パーシャルテンプレートが存在するときは呼び出して処理をすり替えます。

フックを使う

実装したフックを使用するには、それぞれのフックが呼び出しているパーシャルテンプレートを作成します。
作成したパーシャルテンプレートは、フックとして自動で呼び出されます。