2015-11-03 73 views
0

我想獲得項目的foreach,洗牌他們和輸出限制爲4項。的Smarty的foreach /隨機播放/隨機和限制

我這一點。

{content block_id=27} 
{if $_content_27|count >0} 
{foreach name=aussen item=box_data from=$_content_27} 
    <article class="news_row_article col-lg-3"> 
      <div><img src="images/ImgResponsive_Placeholder.png" alt=""/></div> 
      <h3 class="news_row_headline">{$box_data.content_heading}</h3> 
      <p class="news_row_content">{$box_data.content_body}</p> 
</article> 
    {/foreach} 
{/if} 

我已經找到(顯示所有資料)

{foreach array_rand($a_firm_display,5) as $i} 
<a href="{$smarty.const.HOST}{$a_firm_display[$i].url_rewriting}"><img src="{$a_firm_display[$i].firm_logo}" /></a> 
{/foreach} 

或本 Generate distinct smarty random numbers

{assign var="distinct_numbers" value=array_fill(1,15,'x')} 
{assign var="distinct_numbers" value=array_keys($distinct_numbers)} 
{assign var="x" value=shuffle($distinct_numbers)} 

{* result *} 

{foreach from=$distinct_numbers item="value"} 
    {$value} | 
{/foreach} 

hm..somehow得到$ _content_27的項目付諸陣列,輸出,並限制它們?

有什麼想法?

+0

這一邏輯並沒有真正在模板中的歸屬。你應該把它放在PHP中,讓Smarty處理輸出。 –

回答

0

也許你可以使用洗牌和替代的foreach,如果你不介意丟失數組鍵:

{$_content_27=$_content_27|@shuffle} 
{for $iter=0 to 3} 
    ... 
    {$_content_27.$iter.content_heading} 
    ... 
{/for} 
0

對於老版本的Smarty,我發現非常有用的這個片段洗牌我的鑰匙=>值數組

{capture}{$items|@shuffle}{/capture} 

只要將它放在你的foreach循環之前,我希望它可以幫助某人。