【问题标题】:Smarty foreach / shuffle/random and limitSmarty foreach / shuffle/random and limit
【发布时间】:2016-02-03 13:23:04
【问题描述】:

我想获取项目 foreach,将它们随机排列并将输出限制为 4 个项目。

我有这个。 (显示所有项目)

{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..以某种方式从 $_content_27 中获取项目,将它们放入数组,输出并限制它们?

有什么想法吗?

【问题讨论】:

  • 该逻辑并不真正属于模板。你应该把它放在 PHP 中,让 Smarty 处理输出。

标签: random foreach smarty limit shuffle


【解决方案1】:

如果您不介意丢失数组键,也许您可​​以使用 shuffle 和 for 代替 foreach:

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

【讨论】:

    【解决方案2】:

    对于旧版本的 smarty,我发现这个 sn-p 对我的键 => 值数组进行洗牌非常有用

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

    把它放在你的 foreach 循环之前,我希望它可以帮助别人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多