模板系统说明

一、系统特性

  • 基于Template Lite模板引擎开发
  • 兼容80%以上Smarty语法
  • 采用<!--{}-->作为模板边界符
  • 执行效率高,支持多种高级模板特性

二、模板边界符

标准格式:<!--{命令}-->
注释形式:<!--{* 注释内容 *}-->

三、变量操作

1. 基本变量

<!--{$variable}-->

2. 复合变量

<!--{$var1$var2$var3'text'123}-->

3. 数组变量

类型 语法示例 说明
关联数组 <!--{$array.key}--> 使用点号访问属性
数字索引数组 <!--{$array[0]}--> 使用中括号访问数字索引
多维数组 <!--{$array.arr.key}--> 支持多级属性访问

四、函数调用

1. iCMS内置函数

<!--{iCMS:function param='value'}-->

特性:

  • 直接输出结果
  • 结果变量自动命名为函数名
  • 支持数组类型返回

示例:

<!--{iCMS:router url='public:seccode'}-->
<!--{$router|print_r}-->  // 查看返回数组

2. 应用方法调用

(1) 单次调用

<!--{iCMS:app:method param='value'}-->
<!--{$app_method.property}-->

(2) 循环调用

<!--{iCMS:app:method loop='true' as="alias"}-->
   <!--{$alias.property}-->
<!--{/iCMS}-->

示例:

<!--{iCMS:article:list loop='true' row='10' as="art"}-->
   <a href="<!--{$art.url}-->"><!--{$art.title}--></a>
<!--{/iCMS}-->

五、流程控制

1. 条件判断

<!--{if $var == value}-->
    ...
<!--{elseif $var == value2}-->
    ...
<!--{else}-->
    ...
<!--{/if}-->

支持比较运算符:==, !=, >, <, >=, <=

2. 循环结构

(1) foreach循环

<!--{foreach from="$array" key="k" value="v"}-->
    索引:<!--{$k}-->
    值:<!--{$v}-->
<!--{/foreach}-->

(2) for循环

<!--{for start="0" stop="10" value="i"}-->
    当前值:<!--{$i}-->
<!--{/for}-->

六、模板内操作

1. 数学运算

<!--{"$var1 + $var2 * 3"}-->

2. 变量赋值

<!--{assign var="newVar" value="value"}-->

3. 三元运算

<!--{$condition ? $trueValue : $falseValue}-->

4. 数组定义

<!--{array key1="val1" key2="val2" as="myArray"}-->

七、高级技巧

1. 模数运算

<!--{if $index % 3 == 0}-->
    <!-- 每3个元素执行操作 -->
<!--{/if}-->

2. 随机颜色示例

<!--{array 1='red' 2='#000' 3='#fff' as="colors"}-->
<!--{for start="0" stop="5" value="i"}-->
    <!--{rand(1,3)|as="colorKey"}-->
    <div style="color:<!--{$colors[$colorKey]}-->">Item</div>
<!--{/for}-->

或者

<!--{rands as="bgc" values="#F5F5F5,#FAF9F6,#E6F4F1,#F0F8E8,#FFF5EE,#F5F0FF,#FFF8E1"}-->
<div style="background-color:<!--{$bgc}-->;">
  随机背景色
</div>

八、注意事项

  1. 循环标签必须成对使用:<!--{iCMS:...}--> 必须对应 <!--{/iCMS}-->
  2. 变量作用域:循环内定义的变量仅在循环体内有效
  3. 性能建议:避免在模板中进行复杂计算
  4. 调试技巧:使用 print_rvar_dump 输出变量结构

九、附录:Smarty兼容性

支持大部分Smarty语法,差异点:

  • 边界符不同(使用<!--{}-->)
  • 部分函数实现方式不同
  • 扩展了应用方法调用机制

Smarty语法参考


本指南通过结构化的内容组织、代码示例和表格对比,帮助开发者快速掌握iCMS模板系统的核心功能。实际使用中建议结合具体业务场景灵活运用各种模板语法,并注意保持模板代码的简洁性和可维护性。