ThinkTemplate 模板算术运算符使用指南
求元工坊CMS 基于 ThinkTemplate 模板引擎,支持在模板中对字段进行算术运算,包括加减乘除、取余、自增自减及混合运算。
算术运算符 | 模板字段加减乘除运算
ThinkTemplate 模板支持在输出字段时直接使用算术运算符,无需在控制器中预先计算。
模板中支持的运算符
| 运算符 | 使用示例 | 说明 |
|---|---|---|
+ | {$a+$b} | 加法 |
- | {$a-$b} | 减法 |
* | {$a*$b} | 乘法 |
/ | {$a/$b} | 除法 |
% | {$a%$b} | 取余(模运算) |
++ | {$a++} 或 {++$a} | 自增 |
-- | {$a--} 或 {--$a} | 自减 |
| 综合 | {$a+$b*10+$c} | 混合运算,遵循四则运算优先级 |
注:在使用算术运算符时,不支持点语法({$list.click}),需使用数组下标语法({$list['click']})。
使用示例
1. 基本运算
<!-- 输出阅读量的十倍 -->
{$item['views']*10}
<!-- 输出序号(从1开始) -->
{$k+1}
<!-- 计算分页偏移 -->
{$page*10-10}
2. 正确与错误写法对比
<!-- 错误:不支持点语法参与运算 -->
{$item.views+10}
<!-- 正确:使用数组下标语法 -->
{$item['views']+10}
<!-- 错误:不支持函数与运算符混用 -->
{$item['views']|format*10}
<!-- 正确:先函数处理,再运算 -->
{$item['views']+format($item['id'])}
3. 实际应用场景
场景一:列表序号自增
{volist name="list" id="item" key="k"}
<span>第 {$k} 条</span> <!-- 从1开始 -->
<span>索引 {$k-1}</span> <!-- 从0开始 -->
{/volist}
场景二:价格计算
<!-- 输出折扣价 -->
原价:{$item['price']} 元
折扣价:{$item['price']*0.8} 元
节省:{$item['price']-$item['price']*0.8} 元
场景三:分页页码计算
<!-- 上一页页码 -->
<a href="?page={$pagination['currentPage']-1}">上一页</a>
<!-- 下一页页码 -->
<a href="?page={$pagination['currentPage']+1}">下一页</a>
<!-- 总记录数 -->
共 {$pagination['total']} 条
场景四:进度百分比
<div class="progress">
<div class="bar" style="width:{$item['finish']/$item['total']*100}%"></div>
</div>
<span>完成 {$item['finish']/$item['total']*100}%</span>
注意事项
- 参与运算的字段必须是数字类型,字符串类型需先转换。
- 除法运算注意除数为0的情况,建议先用条件判断。
- 混合运算遵循四则运算优先级:先乘除后加减,有括号先算括号。
- 自增自减运算符仅在循环体内有效,用于序号输出。
- 使用运算符时,字段访问必须用数组下标语法
{$item['field']},不支持点语法{$item.field}。
本文档适用于求元工坊CMS v1.0 及以上版本。更多模板语法请参考 ThinkTemplate SSR 数据渲染指南。