首页 » 资讯中心 » 文档

ThinkTemplate 模板算术运算符使用指南

文档 作者:求元工坊 发布时间:2026-10-16 阅读:29

求元工坊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>

注意事项

  1. 参与运算的字段必须是数字类型,字符串类型需先转换。
  2. 除法运算注意除数为0的情况,建议先用条件判断。
  3. 混合运算遵循四则运算优先级:先乘除后加减,有括号先算括号。
  4. 自增自减运算符仅在循环体内有效,用于序号输出。
  5. 使用运算符时,字段访问必须用数组下标语法 {$item['field']},不支持点语法 {$item.field}。

本文档适用于求元工坊CMS v1.0 及以上版本。更多模板语法请参考 ThinkTemplate SSR 数据渲染指南。