把一组东西循环出来(loop)
通用循环:语言列表、面包屑、子栏目、关联数组 —— 凡是控制器给了数组的地方都用它展开。
适用范围:任意有数组可展的地方(页头语言切换器、详情页面包屑、导航子栏目……)。
写法
{naicha:loop from="变量名或作用域.字段" as="行变量名"}
{行变量名.字段}
{/naicha:loop}
from要循环的数组。lang.list 这种二维路径也支持(先取 lang 再取它的 list)as行变量名,行内就写 {行名.字段}行内可用 {行名.key} {行名.value};
如果数组元素本身是关联数组,还可以直接按字段名取。
例:面包屑
<!-- [详情] 控制器给了 crumbs 数组 -->
<nav class="crumb">
<a href="/">首页</a>
{naicha:loop from="crumbs" as="c"}
<span>/</span><a href="{c.url}">{c.name}</a>
{/naicha:loop}
</nav>
例:多语言切换器
<!-- [页头] 语言列表由控制器注入,用 loop 展开 -->
{naicha:if var="lang.on" eq="1"}
<div class="lang-switch">
{naicha:loop from="lang.list" as="L"}
<a href="{L.url}" hreflang="{L.code}"
class="{naicha:if var="L.current" eq="1"}on{/naicha:if}">{L.name}</a>
{/naicha:loop}
</div>
{/naicha:if}
例:栏目树的子栏目
<!-- [页头] nav.children 是一个数组,用 loop 展开一层 -->
{naicha:nav num="8"}
<a href="{nav.url}">{nav.name}</a>
{naicha:loop from="nav.children" as="c"}
<a class="sub" href="{c.url}">{c.name}</a>
{/naicha:loop}
{/naicha:nav}
循环里取值的前缀是行变量名,不是标签名。
{naicha:loop … as="c"} 里面写 {c.name};
写成 {list.name} 之类就是空串 —— 不报错,只是空白。
