静的サイトジュネレータのHugoでは、テンプレートから参照できる変数を定義できます。
これはテンプレートから参照するためのものですが、
Markdownのページでも使用したい場合がありましたので、ショートコードを使った方法を考えました。
1. 目的
Markdownで記述するページで変数を使う方法を記載します。
変数にはいくつか種類がありますが、サイト全体に適用されるサイト変数(Site Valiables)を使います。
参照の仕組みはMarkdown内の表示を部品化できるショートコード(Shortcodes)を使います。
本来のショートコードの使い方ではないですし、もっとスマートな方法があるかもしれませんが、とりあえず。
2. 方法
2.1. サイト変数の定義
サイトの設定ファイルconfig.tomlに対し、サイト変数を定義します。
これで、テンプレートからは".Site.Params.[変数]"という感じで呼び出せます。
・・・
[Params]
company = "xxx株式会社"
zip = "〒000-0000"
address = "東京都・・・"
tel = "00-0000-0000"
fax = "11-1111-1111"
email = "info@xxx.co.jp"
・・・
2.2. ショートコードの記述
layouts/shortcodes/にval.htmlを作成し、サイト変数に合わせて以下のコードを記載します。
※if文の条件で文法的な確認が取れていないのですが、以下で変数内容の比較ができました。
{{ if index .Params 0 | eq "company" }}{{ .Site.Params.company }}
{{ else if index .Params 0 | eq "zip" }}{{ .Site.Params.zip }}
{{ else if index .Params 0 | eq "address" }}{{ .Site.Params.address }}
{{ else if index .Params 0 | eq "tel" }}{{ .Site.Params.tel }}
{{ else if index .Params 0 | eq "fax" }}{{ .Site.Params.fax }}
{{ else if index .Params 0 | eq "email" }}{{ .Site.Params.email }}
{{ end }}
2.3. Markdownの記述
ショートコードのval(val.html)を呼び出す記述で、パラメータで変数名を指定します。
{{< val [変数名] >}}
上記の記述でパラメータに応じたサイト変数を表示できます。
・・・
### 問い合わせ先
TEL: {{< val tel >}} # → TEL: 00-0000-0000
FAX: {{< val fax >}} # → FAX: 11-1111-1111
・・・
以上です。
もっと良い方法があれば教えていただけると幸いです。