2010-08-11 2 views
0

Im ищет сортировку списка наименований продуктов, выводимых Smarty. Вот текущий код:Smarty sort array

{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

+0

может использовать php и сортировать перед циклом sort ($ products)? –

ответ

1

Ну, это возможно, но это не является идеальным решением:

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

Если вы хотите сделать это в любом случае в Smarty было бы гораздо проще (и элегантный), чтобы написать smarty плагин.

кстати. теги {php} {/ php} в smarty 3 устарели

+0

В случае, если вы его пропустили, мораль этой истории - не использовать Smarty. Используйте PHP как шаблонный механизм, которым он был разработан. (Просто не забудьте разделить свою логику и просмотр в разные файлы.) – sirbrialliance

1

Если вы хотите сделать это внутри шаблона, а не в PHP, который присваивает массив, вы можете написать специальный модификатор для массива, который сортирует его в цикле foreach. См this blog post для примера

+0

Я пробовал, что он не работает. – CLiown