Smarty foreach包括if

时间:2017-05-18 14:47:19

标签: if-statement foreach smarty

我的网站上运行了一个foreach循环来显示图像。有一些我不想显示的图像,所以我添加了一个if语句来排除这些图像。但问题是在循环中使用if语句意味着我不能使用$ smarty.foreach.thumbnails.last来确定哪个图像是最后一个,因为它可能是隐藏的图像之一。

我如何过滤这些图像并仍能使用$ smarty.foreach.thumbnails.last?

这是我的代码:

{foreach from=$images item=image name=thumbnails}
  {if $image.legend != "colorschemes"}
    {assign var=imageIds value="`$product->id`-`$image.id_image`"}                                                                                  
    <li data-imgtype="{$image.legend}" class="items{if $j == 1} main-pos{elseif $j == 2} right-pos{elseif $smarty.foreach.thumbnails.last} left-pos{else} back-pos{/if}" id="{$j}">
                                                
      <img src="{$link->getImageLink($product->link_rewrite, $imageIds, 'tm_large_default')|escape:'html':'UTF-8'}"  alt="Owl Image" style="width:100%; margin-top:-200px;" />
                                                
    </li>
    {$j = $j + 1}
  {/if}
{/foreach}

1 个答案:

答案 0 :(得分:0)

一种解决方案是在将数组发送到模板之前过滤后端的数组。这可能会有更好的性能,因为客户端不会加载不必要的图像。过滤可以在php或sql中完成。