模板开发 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限制条数,避免全表扫描
- 需要多次复用的数据放公共片段顶部一次性取出