iCMS模板系统
iCMS的模板系统在Template Lite基础上修改而来!
Template Lite是一个非常快而且很小HTML模板引擎,兼容大部分Smarty语法.
在此强大的基础上,做了很多优化,并增加了自己独有调用方式发展而来!
所以iCMS的模板语法跟smarty其实是差不多的
Smarty
模板边界符
iCMS使用了<!--{}-->做为边界符
模板标签
有如下几种形式
- 
变量
<!--{$变量名称}--> 例: <!--{$vars}--> - 
多个变量联接
<!--{$var$var2$var3'a'1123}--> - 
变量为数组
<!--{$变量名称.属性}--> 例: <!--{$array.key}-->属性为数组的键名
 - 
键名为数字
<!--{$变量名称[数字]}--> 例: <!--{$array[0]}--> - 
变量的属性为数组
<!--{$变量名称.属性.属性}--> 例: <!--{$array.arr.key}--> 
- 调用iCMS特有函数
<!--{iCMS:函数 参数='值'}-->这种方式一般没有赋值到变量都是直接输出结果
如果有结果赋值到变量,都是以函数名命名的变量
结果赋值到<!--{$函数名}-->
结果一般是数组类型
可以使用print_R查看所有属性
<!--{$函数名|print_R}-->- 
示例:1.直接输出
<!--{iCMS:router url='public:seccode'}-->结果输出:
http://www.ooxx.com/public/api.php?app=public&do=seccode - 
示例:2.无输出,结果赋值到变量
<!--{iCMS:config}-->结果赋值到
<!--{$config}-->
可以使用print_R查看所有属性
<!--{$config|print_R}--> 
 - 
 
调用iCMS应用方法
- 无循环,结果直接输出或者赋值到($应用名_方法)
 
类似上面说到的调用iCMS特有函数的方法
返值一般是数组类型
<!--{iCMS:应用名:方法 参数='值'}-->
<!--{$应用名_方法.属性}-->
<!--{$应用名_方法|print_R}--> //使用print_R查看所有属性
例:
<!--{$article_list.url}-->
- 示例1
 
<!--{iCMS:public:qrcode data="二维码"}-->- 示例2
 
<!--{iCMS:public:ui}-->- 示例3:调用栏目cid=1的信息
 
<!--{iCMS:category:array cid="1"}-->
结果赋值到<!--{$category_array}-->,可以使用print_R查看所有属性
<!--{$category_array|print_R}-->
- iCMS应用类标签(循环)无别名
 
<!--{iCMS:应用名:方法 loop='循环标示符' 参数='值'}-->
<!--{$应用名_方法.属性}-->
<!--{/iCMS}-->
示例:
<!--{iCMS:article loop='true' row='100'}-->
<a href="<!--{$article_list.url}-->"><!--{$article_list.title}--></a>
<!--{/iCMS}-->
- 
iCMS应用类标签(循环) 有as (别名) 的情况下
<!--{iCMS:应用名:方法 loop='循环标示符' as="别名" 参数='值'}--> <!--{$别名.属性}--> <!--{/iCMS}-->示例:
<!--{iCMS:category:list loop="true" row="10" as="cate"}--> <a href="<!--{$cate.url}-->"><!--{$cate.name}--></a> <!--{/iCMS}--> - 
注: 在包含有 loop='循环标示符' 的
<!--{iCMS:aaa:bbb}-->标签中,
一定要以<!--{/iCMS}-->结尾 
基本语法
判断 if
模板文件中可以使用if else等判断语句
==,!=,>,<,<=,>=
这些是
if中可以用到的比较。看看就能知道什么意思吧。
<!--{if}--> 必须和 <!--{/if}--> 成对使用
例子
<!--{if $name=="iCMS"}-->
    Hello World
<!--{/if}-->
<!--{if $name=="iCMS"}-->
    Hello World
<!--{else}-->
    Welcome
<!--{/if}-->
<!--{if $name=="iCMS"}-->
    Hello World
<!--{elseif $name=="idreamsoft"}-->
    idreamsoft.com
<!--{else}-->
    Welcome
<!--{/if}-->
取模判断
<!--{if $name % 5 =="1"}-->
    Hello World
<!--{/if}-->
示例:每个li 两组数据
<ul>
<!--{iCMS:article:list loop="true" row="20" }-->
    <!--{if $article_list.first}--><li><!--{/if}-->
    <!--{"$article_list.index % 2"}-->
        <span><!--{$article_list.title}--></span>
    <!--{if $article_list.index % 2}-->
        </li>
        <!--{if !$article_list.last}--><li><!--{/if}-->
    <!--{/if}-->
<!--{/iCMS}-->
</ul>
循环遍历数组 foreach
<!--{foreach}-->必须和<!--{/foreach}-->成对使用,且必须指定from和value属性。from需要遍历的数组value在每次循环中被赋给变量key,start,end属性可选key索引start开始行end结束行
<!--{foreach key=key value=alist from="$article_list"}-->
    <!--{$key}-->
    <a href="<!--{$alist.url}-->"><!--{$alist.title}--></a>
<!--{/foreach}-->
循环 for
<!--{for start="0" stop="10" value="i"}-->
<!--{$i}-->
<!--{/for}-->
模板内简单计算
注:需要加上双引号
<!--{"$key+1"}-->
模板中赋值
<!--{"$a='1a'"}-->
模板中简单三元表达
<!--{$c?$c:'5'}-->
有表达式时 需要加双引号
<!--{"$c<1?$c:'5000'"}-->
模板中,定义一个颜色数组,随机循环
<!--{array 1='red' 2="black" 3="blue" 4="#ededed" 5="#fff" 6="#ffeecc"}-->
<!--{for start="0" stop="10" value="i"}-->
    <!--{'1'|rand:'6'|as:'rk'}--> #放循环里
    <!--{$array[$rk]}-->
<!--{/for}-->
模板中定义一个数组
<!--{array key="value" key1="value1"}-->
<!--{array as="a1" flag="col" a[]="1" b[]="2"}-->
<!--{array as[]="a2" a="1" b="2"}-->
<!--{array as="a3" {json}}-->
<!--{array as="a4" []={json}}-->
<!--{array as="a5" [a]='aa'}-->
<!--{array as="a6" a[b][c]='aa'}-->
模板中引用赋值
变量前加&
<!--{&$article.pubdate|date:"Y-m-d H:i"}-->
 加载中,请稍侯......
      
评论