1

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

{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">and<ul class="slides">放在 foreach 循环内仍然可以获得相同的效果?我基本上希望将所有内容都打包在 foreach 循环中,但只有li' 继续循环和增加,而外部<ul>和外部<div>仅在满足任何条件时加载一次。

这可能吗?

4

1 回答 1

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

于 2014-10-21T09:13:31.043 回答