web-dev-qa-db-ja.com

Liquidテンプレートに含めるパラメーターを渡す

私のJekyllを使用したWebサイトには、機能に似た何かをするインクルージョンがありますが、パラメーターを正しく渡す方法がわかりません。

{% include ... %}を使用すると、このようなパラメーターを渡します。

{% include function.liquid foo="{{ baz.quux }}" %}

..それはリテラル文字列{{ baz.quux }}を渡すだけです。もちろん、これは私が望んでいたものではありません! baz.quuxの値を渡したいです。どうすればいいですか?

ありがとう!

49
Nick

これを達成するには2つの方法があります。 Jekyllのgithub-pagesバージョンに対して両方のアプローチをテストしました。

キャプチャを使用する

インクルードのコードで{{ foo }}を参照していると仮定すると、インクルードを呼び出す前にfooに値を割り当てる必要があります。

といった:

{% capture foo %}{{ baz.quux }}{% endcapture %}
{% include function.liquid %}

パラメータを使用して含める

これにより、変数のスコープを制御できます。 テンプレートのドキュメント にこれを設定する方法の詳細があります。

使用するテンプレートで、構文はほぼ正しいです。

{% include function.liquid foo=baz.quux %}

欠けていた部分は、インクルードファイルのコードで変数を異なる方法で参照する必要があることです。{{ include.foo }}を使用する必要があります。

75
David Hutchison

次のように、引用符または括弧なしで変数を入力します。

{% include footer.html param="value" variable-param=page.variable %}

あなたの場合:

{% include function.liquid foo=baz.quux %}

私のサイトで動作します。

From: https://github.com/jekyll/jekyll/issues/3577#issue-61988857

1
Oskar Świerad

David Hutchisonの他に、3番目のソリューションがあります。

assign を使用する

{% assign foo = baz.quux %}
{% include function.liquid %}

これで、インクルードファイルで{{ foo }}を参照できます。

0
luvejo