Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 细枝模板条件模式循环_Javascript_Loops_Twig_Conditional - Fatal编程技术网

Javascript 细枝模板条件模式循环

Javascript 细枝模板条件模式循环,javascript,loops,twig,conditional,Javascript,Loops,Twig,Conditional,我有一种感觉,这将是一个非常简单的解决方案,但我只是不能把我的头围绕在它现在。我正在用Twig构建一个Craft CMS模板,并希望以特定模式布局一些元素(画廊图像块)。与此示例类似 当我循环遍历我的每个元素时,我想适当地显示它们,无论大小。山猫,山猫,lg,lg,山猫,山猫,山猫,山猫,lg,lg。。。等等 我知道我很明显可以做这样的循环 {% if loop.index is even %} ... {% endif %} 或者像这个一样,是因为[sm,sm,lg,sm,sm-lg] {%

我有一种感觉,这将是一个非常简单的解决方案,但我只是不能把我的头围绕在它现在。我正在用Twig构建一个Craft CMS模板,并希望以特定模式布局一些元素(画廊图像块)。与此示例类似

当我循环遍历我的每个元素时,我想适当地显示它们,无论大小。山猫,山猫,lg,lg,山猫,山猫,山猫,山猫,lg,lg。。。等等

我知道我很明显可以做这样的循环

{% if loop.index is even %}
...
{% endif %}
或者像这个一样,是因为[sm,sm,lg,sm,sm-lg]

{% if loop.index is divisible by(3) %}
...
{% endif %}
但我的模式有点复杂


谢谢您的帮助。

您需要的图案是
sm lg
正常打印,然后反转,然后正常打印

sm lg
lg sm sm
sm lg
…

您可以创建输出此模式的
(a):

{% 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. #}

对于有条件地将某些数据分配给变量来说,这是非常方便的。

我不确定您在这里试图捕获的模式。是的,请确切说明您可能需要什么!我基本上想先触发“真”两次,然后触发“假”两次,然后触发“真”四次,依此类推(就像上面的模式)。对不起,这在照片中有点难以想象,因为它会重复,给我连续四个小图像。好的,我一直在玩弄你的代码,我认为我的想法是对的,但是当涉及到在模式中实现变量时,我有点迷茫。这就是我所拥有的。我应该在什么时候查看一组三个变量来实现模式?@TimCook,这个链接指向我的示例。你有保存吗?我想我已经更新了,试试twigfiddle.com/xld36e/2这里有另一个修改过的版本,对我来说非常适合,但我相信它可以简化得更好。
{% if reverse %}
    {% set pattern = [sm, sm, lg] %}
{% else %}
    {% set pattern = [lg, sm, sm] %}
{% endif %}