Zolaの危険な変数宣言
最終更新日:
つい先程新しく追加したsandboxページ製作中,sandboxセクションを開いているのに,blogセクション以下のページが表示される現象に遭遇しました。
原因
宣言した変数がZolaの変数を上書きしていました。警告とかでないんですね。
下は私がほぼ全てのページ共通で利用するHTMLをまとめたファイルの一部です。ここではsection変数にblogセクションの情報を保存して,最近の記事一覧を生成しています。
<h3>最近の記事</h3>
<nav>
{% set section = get_section(path="blog/_index.md") %}
{% for page in blog.pages %}
<p><a href="{{ page.permalink }}">{{ page.title | safe }}</a></p>
{% endfor %}
</nav>
すべてのページで読み込まれるHTML内部に,Zolaの用意している変数を上書きするコードがあった原因はこれです。すべてのページで読み込んでいるのだから当然sandboxページも対象で,そこで参照される変数はすでにblogのセクション情報で上書きされていました。これが原因でsandboxセクション内のsection変数が,blogのセクション情報に置き換わっていたのでした。
修正
以下のようにすることで修正できました。変数名を書き換えただけです。
<h3>最近の記事</h3>
<nav>
{% set blog = get_section(path="blog/_index.md") %}
{% for page in blog.pages %}
<p><a href="{{ page.permalink }}">{{ page.title | safe }}</a></p>
{% endfor %}
</nav>
学び
Zolaの用意している変数は上書き可能です。頭の片隅にでも置いておきましょう。