2013-07-31 6 views
0

기본 액체 템플릿 엔진을 사용하는 작은 지킬 구동 사이트가 있습니다. 저는 Gekyll을 사용하여 표준 page.date 템플릿 변수를 Git 타임 스탬프로 덮어 쓰고 있습니다. 따라서 이전 게시물의 앞부분에 선언 된 page.original_date 값으로 날짜를 덮어 써야합니다.선택적 템플릿 변수에 대해 '또는'를 Liquid에 사용

<span class="date">{% page.original_date or page.date | date: "%B %-d, %Y" }}</span> 

작동하는 것처럼하지 않는, 그래서 나는이 일을 해요 : 내 템플릿에서

, 나는이 작업을 수행 할 수 있도록하고 싶습니다

<span class="date"> 
{% if page.original_date %} 
    {{ page.original_date | date: "%B %-d, %Y" }} 
{% else %} 
    {{ page.date | date: "%B %-d, %Y" }} 
{% endif %} 
</span> 

그것은 아니다 큰 문제는 아니지만 더 나은 솔루션을 찾기에 충분히 성가시다. Liquid의 논리가 첫 번째 시도에서와 같은 대체 변수를 허용합니까?

답변

2

{% page.original_date or page.date | date: "%B %-d, %Y" }} 논리가 처음에는 나에게 맞지 않습니다.

or Liquid는 확실히 지원되지만 다른 일반적인 프로그래밍 언어와 마찬가지로 논리 OR을 수행하는 조건부 OR 연산자입니다.

그러나 세 번째 연산자와 같은 대체 기능이 필요합니다. ?? Operator 또는

{% page.original_date ?? page.date | date: "%B %-d, %Y" }} 
{% page.original_date ? page.original_date : page.date | date: "%B %-d, %Y" }} 

?: Operator 불행하게도, 나는 그것이 액체에 존재 생각하지 않는다 예를 들어, 유사 C#의에

. Liquid의 이슈 트래커 인 Ternary operator support isssue을 참조하십시오. 삼항 연산자를 찾고 측면에서

+2

감사합니다. 유용합니다! Javascript의 관점에서, 함수 나 무언가에 정의되지 않은 경우 "weight = weight || 180"이라고 말할 수 있습니다. 건배. –

+0

@ChrisWilson : 걱정할 필요가 없습니다. '? :'연산자에 대한 자세한 내용은 [here] (http://en.wikipedia.org/wiki/%3F :)입니다. –

+0

"Elvis"연산자 ... – Gal

1

, 나는 당신이 사용할 수있는이 간단한 구문 생각 : 매우 읽기 쉽고 간결하지만 적어도 작동하지

{% assign original_date = page.original_date %} 
{% unless original_date %}{% assign original_date = page.date %}{% endunless %} 
{% unless original_date %}{% assign original_date = date: "%B %-d, %Y" %}{% endunless %} 

을!

관련 문제