2014-09-04 57 views
3

我有一个图像循环。基于Forloop模式的图像大小

期望的图案:

1 4 5 8 9  12 13  16 
2 3 6 7  10 11  14 15 

基于for循环数,我将有2点可能的图像的大小,在上面的那些将是尺寸1和在底部的那些将是大小2.

所以我用divisibleby:“x”开头,但很快就意识到这不会奏效,因为该模式并不总是允许divisibleby,并且在某些情况下两者都可能是真实的。

我可以litteraly这样做manualy检查的数量是在列表中,如:

[2,3,6,7,14,15....] 

但是,这将是非常愚蠢的。

有没有简单的方法来做到这一点?

我原来的想法,那根本就没有用!

{% for project in branding %} 
    {% if forloop.counter == 1 or forloop.counter|divisibleby:"4" or forloop.counter|divisibleby:"5" %} 
     <div class="tile"> 
      <a href="/work/{{ project.slug }}/"> 
       <img src="{% thumbnail project.tile_image "313x490" crop="center" as im %}{{ im.url }}{% endthumbnail %}"> 
      </a> 
     </div> 
    {% endif %} 
    {% if forloop.counter|divisibleby:"2" or forloop.counter|divisibleby:"3" %} 
     <div class="tile"> 
      <a href="/work/{{ project.slug }}/"> 
       <img src="{% thumbnail project.tile_image "313x310" crop="center" as im %}{{ im.url }}{% endthumbnail %}"> 
      </a> 
     </div> 
    {% endif %} 
{% endfor %} 

回答

3

这看起来像内置的模板标签给我cycle的情况下:

{% for project in branding %} 
    <div class="tile"> 
     {% cycle '313x490' '313x310' '313x310' '313x490' as size silent %} 
     <a href="/work/{{ project.slug }}/"> 
     <img src="{% thumbnail project.tile_image size crop="center" as im %}{{ im.url }}{% endthumbnail %}"> 
     </a> 
    </div> 
{% endfor %} 

但我对您使用的thumbnail标签不熟悉,所以可能会出现复杂的情况。

+0

这是一个非常好的解决方案,它的工作原理非常简单! – Harry 2014-09-04 15:25:45

+0

我看到了你提出的编辑 - “silent”参数,现在补充,也将停止不必要的输出。 – 2014-09-04 15:42:11

+0

非常好,谢谢 – Harry 2014-09-13 09:32:21

5

我相信你正在寻找的情况下,你的电话号码MOD 4是2或3

2 % 4 = 2 
3 % 4 = 3 
6 % 4 = 2 
7 % 4 = 3 
10 % 4 = 2 
11 % 4 = 3 
+0

哇,我什至都没有想过这个.. :-(谢谢! – Harry 2014-09-04 15:23:43