2017-04-08 4 views
2

지킬 (Jekyll)을 포함하는 별도의 항목을 만들려면 동일한 공통 변수를 참조 할 수 있습니다. 간단한 시나리오가 있습니다.Jekyll include 내부에서 전역 Liquid 변수를 수정할 수 있습니까?

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

그런 다음 나는 다음과 같은 액체 코드 _include/getter.html를 만들 :

we have {{ globalString }} 

그런 다음 내 페이지에 내가 넣어 :

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

나는 다음과 같은 액체 코드 _include/setter.html를 만들

나는와 같은 결과를보고 싶습니다. 그 결과로.

물론 globalString은 존재하지 않으므로 작동하지 않습니다. 포함에서 볼 수있는 site 또는 page에 새 변수를 만들 수없는 것 같습니다. 당장 나는 어색하게이 문제를 capture으로 해결하려고한다. 지킬에 포함 된 에 전달하는 더 좋은 방법이 있습니까?

답변

2

이것은 포함 호출하고 매개 변수로 전달하기 전에 전역 변수를 설정 할 수 있습니다 :

_includes/setter.html :

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

_includes/getter.html : we 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.html : we have {{ globalString }}

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

와우, 놀랍 카운터가 직관적이다. setter에서'globalString'을 사용하면 지역 변수처럼 보입니다. 그것이 세터 외부의 가치에 영향을 줄 것이라는 것을 나는 전혀 몰랐다. 감사! 슈퍼 유용한! – EFC

+1

@EFC 답변을 업데이트했습니다. 매개 변수 없이도 작동한다는 것을 알았습니다. 코드가 더 깨끗해졌습니다. – marcanuy