2017-05-18 1 views
0

이미지를 표시하기 위해 내 사이트에서 foreach 루프가 실행 중입니다. 표시하고 싶지 않은 이미지가 있기 때문에 이러한 이미지를 제외시키기 위해 if 문을 추가했습니다. 그러나 문제는 루프 내에서 if 문을 사용한다는 것은 $ smarty.foreach.thumbnails.last를 사용하여 숨겨진 이미지 중 하나 일 수있는 이미지를 마지막으로 처리 할 수 ​​없다는 것을 의미합니다.멋진 foreach를 포함한 경우

어떻게 이러한 이미지를 필터링해도 여전히 $ 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}

답변

0

하나의 솔루션은 템플릿에 보내기 전에 백 엔드의 배열을 필터링하는 것입니다. 클라이언트가 불필요한 이미지를로드하지 않으므로 성능이 향상 될 수 있습니다. 필터링은 php 또는 sql에서 수행 할 수 있습니다.

+0

불행히도 나는 페이지에서 어디에서나 사용할 이미지가 필요하므로 완전히 제외 할 수는 없습니다. 나는이 갤러리에서 그들을 숨길 필요가있다. 그러나 불행히도,이 갤러리는 올바르게 작동하기 위해서는 갤러리의 마지막 항목에 특정 클래스가 필요합니다. – cyanoxide

+0

@ cyanoxide 다른 곳에이 이미지를 사용하고 있다면 질문에 for 루프가 있습니까? 아니면 그 이후입니까? 코드의 앞부분에있는 경우 첫 번째 for 루프에서 {if $ image.legend! = "colorschemes"}를 포함하여 if 조건에 가장 적합한 반복이 무엇인지 찾아 변수로 저장할 수 있습니다. 그런 다음 두 번째 forloop에서 {if $ j == $ newVariable}을 사용하여 마지막 반복 조건을 찾습니다. – entis

관련 문제