Ограничить количество непустых элементов в шаблоне smarty

OlgaF

Новичок
Нужно выводить первые три непустых элемента из массива. Код ниже не работает... Тоесть элементы с пустым полем $b.customProduct_8 исключает, а вот как взять только три первых?

{|foreach from=$basketsArray key="i" item="b" name="foo"|}
{|if (!empty($b.customProduct_8))|}
{|if $smarty.foreach.foo.index < 3|}
{|$b.name|}
{|/if|}{|/if|}
{|/foreach|}

Подскажите, пожалуйста, как это можно реализовать?
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Сами поняли что написали?
 

OlgaF

Новичок
)) Ок, попробую по другому) Есть массив продуктов $basketsArray , в котором не все продукты имеют заполненное доп.поле $b.customProduct_8 . Мне нужно исключить элементы с пустым доп.полем и получить первые три элемента (вернее некоторые их поля).

{|foreach from=$basketsArray key="i" item="b" name="foo"|} - массив продуктов
{|if (!empty($b.customProduct_8))|} - если это доп.поле у продукта не пустое
{|if $smarty.foreach.foo.index < 3|} - ?тут я пыталась получить 3 элемента с непустым доп.полем $b.customProduct_8,
{|$b.name|} - вывести название элемента
{|/if|}{|/if|}
{|/foreach|}
 
Последнее редактирование:

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Судя по вашему коду он должен делать описанное вами. Что именно "не работает"?
 

OlgaF

Новичок
вот здесь {|if $smarty.foreach.foo.index < 3|} - ?тут я пыталась получить 3 элемента с непустым доп.полем $b.customProduct_8,
я получаю один третий элемент с условием что доп.поле заполнено ... а нужно получать три элемента
 

OlgaF

Новичок
Спасибо, вот так я действительно получаю первые три элемента (их имена):

{|foreach from=$basketsArray item="b" name="foo"|}
{|if $smarty.foreach.foo.iteration <= 3|}
{|$b.name|}
{|/if|}
{|/foreach|}

но с дополнительным условием (если у элементов доп.поле не пустое) - пусто, ничего не происходит, не выводит...

{|foreach from=$basketsArray item="b" name="foo"|}
{|if (!empty($b.customProduct_ssilkanatovar8))|}
{|if $smarty.foreach.foo.iteration <= 3|}
{|$b.name|}
{|/if|}{|/if|}
{|/foreach|}
 

AnrDaemon

Продвинутый новичок
Код:
{$i=0}
{foreach $basketsArray as $b}
{if empty($b.customProduct_ssilkanatovar8)}{continue}{/if}
…
{$i=$i+1}{if $i > 3}{break}{/if}
{/foreach}
 
Сверху