2016-12-30 1 views
0

매우 간단한 해결책이 될 것이라고 생각하지만 지금 당장은 내 머리를 감쌀 수 없습니다. Twig로 Craft CMS 템플릿을 만들고 특정 패턴의 일부 요소 (갤러리 이미지 블록)를 레이아웃하려고했습니다. 이 예제와 유사합니다. example photo조건부 패턴 반복 템플릿 템플릿

필자는 각 요소를 반복하면서 적절하게 작게 또는 크게 표시하려고합니다. sm, sm, lg, lg, sm, sm, sm, sm, lg, lg ... 등등.

는 내가 분명히이

{% if loop.index is even %} 
... 
{% endif %} 

처럼 또는 [SM, SM, LG 전자, SM, SM LG]

{% if loop.index is divisible by(3) %} 
... 
{% endif %} 

하지만 내의 결과에 대한 이와 같은 루프를 미리 형성 할 수 있습니다 알고 패턴은 조금 더 복잡합니다.

감사합니다.

+2

여기서 캡처하고자하는 패턴이 확실하지 않습니다. – JETM

+0

네, 필요한 것이 무엇인지 정확하게 설명하십시오! –

+0

기본적으로 처음 두 번은 "true", 두 번은 "false", 그 다음에는 "true"를 네 번 반복합니다. 위의 패턴과 같습니다. –

답변

0

원하는 패턴 ... sm sm lg 인쇄가 정상적으로 후 정상적으로 반전이다

sm sm lg lg sm sm sm sm lg ...

만들 수

macro (a function in Twig)이 패턴을 출력한다 :

{% macro printPattern(reverse = false) %} {# the function AKA macro signature #} 
    {% set sm = 'a small image' %} {# Make this an <img> tag. #} 
    {% set lg = 'a large image' %} 
    {% set pattern = (reverse) ? [lg, sm, sm] : [sm, sm, lg] %} 

    {% for n in pattern %}{{ n }} {% endfor %} 
{% endmacro %} 

{# If you wanted to use the macro in the same file you must include: #} 
{% import from _self as helper %} 

{# Then call the macro: #} 
{{ helper.printPattern(false) }} 
{{ helper.printPattern(true) }} 
{{ helper.printPattern() }} {# This does the same as helper.printPattern(false) #} 
{# because we set a default value for the passed-in variable in the macro's signature. #} 

Example


,515,

특별 참고

I는이 광고에 ternary 연산자 ? 사용 :

{% set pattern = (reverse) ? [lg, sm, sm] : [sm, sm, lg] %}

(reverse 호출이있는 boolean 값, 즉 true 또는 false).

{% if reverse %} 
    {% set pattern = [sm, sm, lg] %} 
{% else %} 
    {% set pattern = [lg, sm, sm] %} 
{% endif %} 

Ternary operator 조건부 변수에 일부 데이터를 할당하기위한 매우 편리합니다 :

그 라인에 해당합니다.

+0

좋아, 코드로 놀아 왔고 올바른 페이지에 있다고 생각하지만 패턴에 가변 문자를 구현할 때는 약간의 손실이 발생합니다. 이것이 내가 가진 것입니다. https://twigfiddle.com/xld36e 어떤 시점에서 패턴에 구현할 세 가지 변수 세트를 살펴 봅니까? –

+0

@TimCook, 그 링크가 내보기를 가리키고 있습니다. 저장 했니? – Rhono

+0

나는 그것을 업데이트했다고 생각하고, twigfiddle을 시도해보십시오.com/xld36e/2 –