首页 / 建站手册 / 把一组东西循环出来(loop)

把一组东西循环出来(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} 之类就是空串 —— 不报错,只是空白。
没找到答案? 可以在 联系我们 留言说明使用场景,我们会补充进文档。