基于 Forloop 模式的图像大小
Posted
技术标签:
【中文标题】基于 Forloop 模式的图像大小【英文标题】:Image size based on Forloop pattern 【发布时间】:2014-10-29 10:07:01 【问题描述】:我有一个图像循环。
想要的图案:
1 4 5 8 9 12 13 16
2 3 6 7 10 11 14 15
根据 forloop 编号,我将有 2 种可能的图像尺寸,顶部的尺寸为 1,底部的尺寸为 2。
所以我开始使用 divisibleby:"x",但很快意识到这行不通,因为该模式并不总是允许 divisibleby,在某些情况下两者都可能是真的。
我可以手动执行此操作以检查号码是否在列表中,例如:
[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 %
【问题讨论】:
【参考方案1】:对我来说,这看起来像是 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
标签,所以那里可能有问题。
【讨论】:
这是一个非常好的解决方案,它运行完美,而且非常简单! 我看到了您提出的修改 - 现在添加的silent
参数也将停止不需要的输出。【参考方案2】:
我相信您正在寻找数字 mod 4 为 2 或 3 的情况。
2 % 4 = 2
3 % 4 = 3
6 % 4 = 2
7 % 4 = 3
10 % 4 = 2
11 % 4 = 3
【讨论】:
以上是关于基于 Forloop 模式的图像大小的主要内容,如果未能解决你的问题,请参考以下文章