模板开发 2 更新于 2026-10-13

模板开发 · 标签语法

文枢CMS 使用 ThinkPHP 原生模板引擎,标签一律用花括号,而不是尖括号。

⚠️ 是 {cms:contentlist}...{/cms:contentlist},不是 <cms:contentlist>。

一、基本形式

{cms:标签名 属性="值" 属性2="值2"}
    循环体
{/cms:标签名}

单标签(无循环体)以 / 结尾:

{cms:nav /}
{cms:pagelist /}

二、属性写法

写法含义
catid="9"常量值
catid="$cat.id"变量
limit="10"数字
order="publish_time desc"排序表达式
where="is_recommend=1"附加条件

排序字段不要加反引号,否则会报 order express error。

三、循环变量

默认循环变量是 item,索引是 k(可自定义):

{cms:contentlist catid="9" limit="5"}
  <a href="{$item.url}">{$item.title}</a>
{/cms:contentlist}

自定义名称:

{cms:contentlist catid="9" limit="5" id="row" key="i"}
  <span>{$i}</span> <a href="{$row.url}">{$row.title}</a>
{/cms:contentlist}

四、嵌套

栏目树与内容列表可以嵌套:

{cms:categorylist id="c"}
  <h3>{$c.name}</h3>
  <ul>
  {cms:contentlist catid="$c.id" limit="5" id="art"}
    <li><a href="{$art.url}">{$art.title}</a></li>
  {/cms:contentlist}
  </ul>
{/cms:categorylist}

五、条件判断

{if $item.is_recommend == 1}
  <span class="badge">推荐</span>
{/if}

{if condition="$cat.type eq 1"}
  这是单页栏目
{else /}
  这是列表栏目
{/if}

六、常用内置标签

{volist name="list" id="vo"}...{/volist}      遍历数组
{foreach name="list" item="vo"}...{/foreach}  遍历
{empty name="list"}暂无数据{/empty}           空判断
{notempty name="list"}有数据{/notempty}
{include file="common/header" /}              引入片段

七、原样输出

调试或展示标签语法时,用 {literal} 包裹:

{literal}
{cms:contentlist catid="1"}...{/cms:contentlist}
{/literal}

文档里的代码块请务必包在 {literal} 里,否则会被引擎解析。

八、性能建议

  • 列表页优先使用 contentlist 标签:它已内置分页与扩展字段注入
  • 树形栏目一次性取全量,不要在循环里再查库
  • 首页区块用 limit 限制条数,避免全表扫描
  • 需要多次复用的数据放公共片段顶部一次性取出

下一页