2010-08-11 101 views
0

我想排序Smarty輸出的產品名稱列表。下面是當前的代碼:Smarty排序陣列

{foreach from=$products key=i item=product} 
    <li> 
     <a href="discuss.php?product={$product.uri} 
     {if $filter_style}&amp;style={$filter_style}{/if}">{$product.name|capitalize} 
     </a> 
    </li> 
{/foreach} 

的HTML輸出:

<li>zzzzz</li> 
<li>qqqqq</li> 
<li>ccccc</li> 
<li>aaaaa</li> 

我如何排序A-Z?

+1

對PHP進行排序。即使有可能,你應該避免在smarty中使用「複雜」的數據操作。 – Jauzsika 2010-08-11 08:19:06

+0

可以使用PHP和排序 循環前 排序($ products)? – 2010-08-11 08:19:16

回答

1

嗯,這是可能的,但是這並不是完美的解決方案:

{php} 
    sort($this->_tpl_vars['your_smarty_variable_name']); 
{/php} 
{foreach... 

。如果你想做到這一點在智者它會更容易(優雅)寫聰明的插件。

btw。在smarty 3中的{php} {/ php}標籤已被棄用

+0

萬一你錯過了,故事的寓意就是不要使用Smarty。使用PHP作爲它設計的模板引擎。 (只要確保將您的邏輯和視圖分爲不同的文件。) – sirbrialliance 2012-03-26 15:44:59

1

如果您想在模板內部而不是在指定數組的PHP內部執行此操作,您可以爲數組編寫一個自定義修飾符,並將它在foreach循環中排序。見this blog post爲例

+0

我試過它不起作用。 – CLiown 2010-08-11 09:00:05