标签语法总览
两类标签、属性规则、条件判断,以及模板里绝对不能做的事。
两类标签
| 类型 | 写法 | 用途 |
|---|---|---|
| 单标签 | {naicha:site name="title"} | 取一个值,直接输出 |
| 块标签 | {naicha:list}…{/naicha:list} | 循环输出一段 HTML |
属性写法
name="news" 双引号字符串
num="10" 数字
flag="1" 布尔
title="{naicha:param name="cid"}" 属性值里可以嵌套标签
变量取值
循环里用 标签名.字段名:
{list.title} 标题(自动 HTML 转义)
{list.content html="1"} 正文(按 HTML 原样输出)
{list.summary excerpt="60"} 截取 60 字并去掉标签
{list.publish_time format="Y年m月d日"}
{list.title urlencode="1"} 用于拼 URL
默认就是安全的:不写
html="1" 时,输出内容一律做 HTML 转义。
只有当字段内容确实是你自己写的富文本时,才加 html="1"。
条件判断
{naicha:if var="list.top" eq="1"}
<span class="badge">置顶</span>
{naicha:else}
<span>普通</span>
{/naicha:if}
可用比较:eq、neq、gt、lt、gte、lte、notempty。
判断变量不存在或为空时,条件一律不成立,不会报错。
在 JavaScript 里用变量
<script> 内部只识别 {naicha:...} 形式的标签,其余花括号原样保留 ——
这样 JS 里的对象、函数体、CSS 规则块都不会被误当成模板变量。
<script>
fetch('{naicha:url type="api"}/upload', { method: 'POST' }) // ✔ 正常编译
var obj = { a: 1 }; // ✔ 原样保留
</script>
需要在脚本里取宿主变量(如后台地址)时,用 {adminBase} 这类少数几个已放行的名字,
其余裸变量请改用 {naicha:param name="x"} 明确取值。
模板里做不到的事
- 不能写 SQL。模板只能调用受控的取数标签,语法上就没有拼接 SQL 的口子。
- 不能调任意 PHP 函数。能用的只有修饰符(
excerpt、format等)和标签。 - 不能取没在控制器里传入的变量,取不到输出空串,不会泄露其它数据。