2017-04-08 16 views
2

私は同じ共通変数を参照できるJekyllインクルードを分離するために作成したいと思います。ここでは簡単なシナリオを示します。Jekyllインクルードの中からグローバルなLiquid変数を変更できますか?

私は、次の液体のコードで_include/setter.htmlを作成します。

{% globalString | append: include.add | append: "," %} 

その後、私は、次の液体のコードで_include/getter.htmlを作成します。

we have {{ globalString }} 

はその後、私のページに私が入れ:

{% include setter.html add = "one" %} 
{% include setter.html add = "two" %} 
{% include getter.html %} 

私はのような結果を見たいのですがその結果として。

もちろん、globalStringは存在しないので、これは動作しません。私はsiteまたはpageに新しい変数を作成するようには見えませんが、これはincludeから見ることができます。今のところ、私はcaptureでこれを扱っています。データを渡すより良い方法がありますがジキルに含まれていますか?

答えて

2

これは含み呼び出し、パラメータとして渡す前にグローバル変数を設定して行うことができます。

_includes/setter.html

before: {{include.globalString}}<br> 
{% assign globalString = include.globalString | append: include.add | append: "," %} 
after: {{globalString}}<br> 

_includes/getter.htmlwe have {{ include.globalString }}

次に:

{% assign globalString = "" %} 
{% include setter.html add = "one" globalString=globalString%} 
{% include setter.html add = "two" globalString=globalString%} 
{% include getter.html globalString=globalString%} 

なり出力:

before: 
after: one, 
before: one, 
after: one,two, 
we have one,two, 

更新

また、パラメータとして「グローバル」変数を渡さずに動作し、唯一の要件は、が含ま呼び出す前に、それを定義することです。

_includes /setter.html

before: {{globalString}}<br> 
{% assign globalString = globalString | append: include.add | append: "," %} 
after: {{globalString}}<br> 

_includes/getter.htmlwe have {{ globalString }}

{% assign globalString = "" %} 
{% include setter.html add = "one" %} 
{% include setter.html add = "two" %} 
{% include getter.html %} 
+0

うわー、それは上空カウンター直感的です。 setterで 'globalString'を使うと、ローカル変数のように見えます。私はそれがセッター外の価値に影響を与えるとは考えていませんでした。ありがとう!スーパーヘルプ! – EFC

+1

@EFC答えを更新しました。パラメータなしで動作することがわかりました。コードはより洗練されています。 – marcanuy

関連する問題