2017-05-18 13 views
0

イメージを表示するために自分のサイトでforeachループが実行されています。しかし、表示したくない画像がいくつかありますので、これらの画像を除外するif文を追加しました。しかし、ループ内でifステートメントを使用すると、$ smarty.foreach.thumbnails.lastを使用して隠されたイメージの最後のイメージが生成されないということが問題になります。私はこれらのイメージをフィルタリングし、まだ$ smarty.foreach.thumbnails.lastを使用することができることに行くかどうSmarty foreach includingの場合

?それが立つよう

は、ここに私のコードです:

{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これらの画像を他の場所で使用している場合は、質問のforloopの前かそれ以降ですか?コードの初期段階では、最初のforloopに{if $ image.legend!= "colorschemes"}を含めて、if条件に適合する最後の反復を見つけ出し、変数として保存することもできます。次に、2回目のforloopで{if $ j == $ newVariable}を使って、最後にあなたの条件に合う反復を見つけます。 – entis

関連する問題