将Div和UL元素放在foreach循环中

时间:2014-10-21 03:50:29

标签: smarty smarty3 cmsmadesimple

我正在使用CMSMS 1.11.11,其中内置了Smarty 3。我有以下代码,它允许我检测是否存在新闻字段定义....

{if isset($entry->fields)} 
<div class="flexslider">
<ul class="slides">
{foreach from=$entry->fields item='field'}
{if $field->type == 'file'}
{if $field->name|strpos:"Photo" !== false}
{if $field->displayvalue != ''}
<li><img src="{$entry->file_location}/{$field->displayvalue}"/></li>
{/if}
{/if}
{/if}
{/foreach}
</ul>
</div>
{/if}

...如果它们确实存在,那么foreach循环会将每个项目循环到<li>

我的问题是,是否可以将<div class="flexslider"><ul class="slides">置于foreach循环中仍然可以获得相同的效果?我基本上希望在foreach循环中打包所有内容,但只有li继续循环和增加,而外<ul>和外<div>只加载一次,如果有的话条件得到满足。

这可能吗?

1 个答案:

答案 0 :(得分:2)

你可以将div和ul放在foreach中,但是你仍然需要if条件:

{if isset($entry->fields)} 
{foreach $entry->fields as $field}
{if $field@first}
<div class="flexslider">
<ul class="slides">
{/if}
{if $field->type == 'file'}
{if $field->name|strpos:"Photo" !== false}
{if $field->displayvalue != ''}
<li><img src="{$entry->file_location}/{$field->displayvalue}"/></li>
{/if}
{/if}
{/if}
{if $field@last}
</ul>
</div>
{/if}
{/foreach}
{/if}

我也改变了从Smarty2到Smarty3的循环风格