パーツの利用
{{ super() }} {{ page.title }}
Tipsなど共有コンポーネント的に使いたいものがあり、これをパーツとして登録することにしました。
Nunjucksのマクロ
不特定他数の場所から呼び出せるよう、Nunjucksのマクロを使います。
> **macro | Nunjucks** > https://mozilla.github.io/nunjucks/templating.html#macro
マクロは 関数名(引数, 引数...) のように宣言します。
「render」という関数を宣言してみましょう。
tips.html
<div data-gb-custom-block data-tag="-" data-description='' data-escription=''></div>
<div class="border p-8 flex">
<svg></svg>
<span class="text-sm">{{ description }}</span>
</div>
<div data-gb-custom-block data-tag="-"></div>共有コンポーネントの呼び出し
別ファイルで宣言したマクロを import "ファイル名" as エイリアス名 のように読み込んで呼び出します。
1.md
呼び出した場所で、マクロに書いたHTMLが展開されます。
{{- figure.render("Tipsを設置した例", "/assets/2-3/macro.png") }}
参考:ホワイトスペースの扱い
マクロに書いたHTMLのインデントはマークダウンの「空白2つをコードブロックの開始とみなす」ルールとバッティングして、予想しないレンダリング結果になることがあります。
Numjucksのタグに {%- や {{- のようにハイフンを付けると空白を取り除いたHTMLを展開できるため、マークダウンにHTMLを埋め込む場合は付けておいたほうが無難です。
> **Whitespace Control | Nunjucks** > https://mozilla.github.io/nunjucks/templating.html#whitespace-control
Last updated