变量语法

　　变量语法是模板中直接书写PHP变量的方法。在Nemo中，变量可以直接书写在模板中，无需事先声明。书写时无需在变量两边添加大括号“{}”，数组变量的键值也无需添加引号。调用类中的变量，可以直接使用“->”。

如：$array[monkey] $float $n->tplfile

 

语法：{变量:date 日期格式}

解释：按照指定的日期格式显示时间戳

　　对于时间戳内容的变量，本语法可以直接按照指定的日期格式显示变量的值，日期格式允许用变量代替。

　　日期格式请参考 PHP 手册 http://php.liukang.com/manual/zh/function.date.php

如：{$time:date $a}　将显示　2006-04-14

 

语法：{变量:float 格式}

解释：按照指定的格式显示浮点数

　　对于浮点数，本语法可以将变量按照格式所指定的位数设置进行显示。格式写法为“M.D”，M 代表整数位，D 代表小数位。格式允许用变量代替。

如：{$float:float 3.4}　将显示　123.4567

 

语法：{变量:format 格式}

解释：按照指定的格式显示变量

　　本语法会按照指定的格式显示变量，格式定义规则按照 PHP 的函数 sprintf 为准，格式允许用变量代替。

　　格式请参考 PHP 手册 http://php.liukang.com/manual/zh/function.sprintf.php

如：{$float:format %010d}　将显示　0000000123

 

语法：{变量:specialchar}

解释：将变量的内容转换为可显形式

　　本语法适用于把变量显示在 INPUT 表单的值中，使之能够完整的显示出自串的原始内容。本函数调用 PHP 的 htmlspecialchars 函数，如要对此函数附加参数，请用“{变量:specialchar 参数}”格式引用。

　　参数含义请参考 PHP 手册 http://php.liukang.com/manual/zh/function.htmlspecialchars.php

如：<input name=’name’ value=’{$specialchar:specialchar}’>

 

语法：{变量:default 默认值}

解释：当变量无效显示默认值

　　本语法会自动判断变量是否定义或者为空，如符合则显示默认值，默认值允许用变量代替。

如：{$error:default 没有错误}

 

语法：{变量:userfunc(参数)}

解释：使用用户自己的函数处理变量

　　本语法会使用用户自己的函数或者系统函数处理变量。用户函数没有第二个或更多的参数可以不写。

如：{$error:userfunc()}       {$error:userfunc(’*',’*')}

函数定义

function userfunc($var,$left=’[',$right=']‘) {
 return “$left$var$right”;
}


流程语法

　　流程语法为控制模板显示方式的语法，把 PHP 代码中用于显示的流程语句写在此处，可以有效的 PHP 代码的效率，这也是 MVC 设计理论的重点。流程语法有 2 种书写方法：

<!--语法标记-->

　　按照 HTML 注释的书写方法，这样可以方便使用 UltraEdit 等直接编辑源码的程序员方便的查看到流程语句而设定的。

<语法标记-->

　　按照HTML标记的书写方法，这样是照顾到使用Dreamweaver等可视化工具制作模板的人员，因为HTML中未定义的标记在编辑状态中是不会显示的，因此不会影响设计模板的可视化效果。大家可以依照习惯选用。

 

语法：<!--include:模板文件 模板编译缓存的有效期-->

　　模板运行到此处将引用指定的模板文件的内容到当前位置，如果定义了常量 _TPLPath_ ，将到指定的目录中去读取子模板文件。模板编译缓存的有效期可选，如果指定此参数，如果指定此参数子模板会在指定的有效期后重新缓存，0 表示子模板文件更新后才重新缓存，即使父模板文件更新子模板也不更新。

如：<!--include:header.htm-->

 

 

 

 

语法：<!--if:条件表达式-->…<!--else-->…<!--/if-->

　　　<!--if:条件表达式-->…<!--elseif:条件表达式-->…<!--elseif:条件表达式-->…<!--/if-->

　　模板运行到此处将按照 if 条件表达式的状态显示相应的内容。条件表达式中的变量书写规则同变量语法中的声明。

如：

<!--if:$if==1-->
　条件成立
<!--else-->
　条件不成立
<!--/if-->

 

语法：<!--switch:变量-->…<!--case:值1-->…<!--case:值2-->…<!--case:值n-->…<!--/switch-->

　　当一个变量存在多个不同的值显示不同的内容时，可以用此语法。值可以写成字符也可以写成变量。

　　<!--switch:变量-->…<!--case:值1--> 中为所有值都不符合时显示的默认内容。

如：

<!--switch:$switch-->默认
<!--case:1-->Case 1
<!--case:2-->Case 2
<!--case:3-->Case 3
<!--/switch-->

 

循环语法包含３类，一类是 for 标准与法，一类是用于 HTML 标记的 for_xxx 系列语法，最后一类是 loop 特殊循环语法。

语法：<!--for:数组变量 键变量 值变量-->…<!--/for-->　<!--for:数组变量 值变量-->…<!--/for-->

　　数组变量可以通过此语法显示其内容，如果为多维数组，可以继续嵌套。

如：

<!--for:$for $k $v-->
$k = $v
<!--/for-->

 

语法：<!--for_option:数组变量 值键 值变量 选中的值-->……<!--/for_option-->

　　本语法作用为生成 <select> 标记的 <option> 标记，适用于２维数组，值键为用于显示 <option> 标记 value 属性所在键的值。

　　选中的值可以为数组变量也可以为单独变量，存在的值在 <option> 中被默认加上 selected 属性。如不希望设置默认选中的值，则选中的值可填写 null。

　　举例说明，如数组 $for_option 类似为如下结构：

id   name
————–
1    Monkey
2    Cat
3    Mouse

则我们如此书写模板　<!--for_option:$for_option id $v null-->$v[name]<!--/for_option-->

那么生成结果为：

<option value=”1″>Monkey<option value=”2″>Cat<option value=”3″>Mouse

语法：<!--option:数组变量 选中的值-->

　　此语法为 <!--for_option--> 语法的简化版，区别在于本语法将直接用数组变量的键作为 <option> 标记的 value 属性，数组变量的值作为显示的内容。

 

语法：<!--for_checkbox 名称:数组变量 值键 值变量 选中的值-->……<!--/for_checkbox-->

　　本语法作用在于通过循环生成多个 <input type=”checkbox”> 的值，含义同 <!--for_option--> 语法，区别在于名称为 <input> 标记 name 属性的值。

如：<!--for_checkbox name1[]:$for_option id $v $selected-->$v[name]<br><!--/for_checkbox-->

同样，此语法也有一个简化版

语法：<!--checkbox 名称:数组变量 选中的值-->

 

语法：<!--for_radio 名称:数组变量 值键 值变量 选中的值-->……<!--/for_radio-->

　　本语法作用在于通过循环生成多个 <input type=”radio”> 的值，含义同 <!--for_option--> 语法，区别在于名称为 <input> 标记 name 属性的值，且选中的值不能为数组，因为 radio 为单选框。

如：<!--for_radio name2:$for_option id $v $selected-->$v[name]<br><!--/for_radio-->

同样，此语法也有一个简化版

语法：<!--radio 名称:数组变量 选中的值-->

 

语法：<!--loop:数组变量-->…{[键值]}…<!--/loop-->

　　本语法作用于二唯数组变量，在数组的二维键值为字串时使用，循环中可以直接书写二维键值。
如：

以上例中的 $for_option 数组为例
  <!--loop:$for_option-->
   {[name]}<br>
  <!--/loop-->
将显示 
  Monkey
  Cat
  Mouse

 

语法：<!--loop:循环起始 循环运行条件 循环增量-->……<!--/loop-->

　　本语法作用同 PHP 的 for 语法，三个参数的含义与 for 相同，用空格分割。

如：<!--loop:$i=1 $i<10 $i++-->+<!--/loop-->

 


特殊语法

　　特殊语法为额外附加的，附带一些PHP特性的语法，方便在模板中书写 PHP 语句。

语法：{echo:显示的内容}

　　此语法直接调用echo显示指定的内容，等同于执行了echo。字串注意加引号。

 

语法：<!--php:PHP语句-->

　　此语法中可以直接书写PHP语句。

 

语法：<!--**注释**-->

　　此语法中可以书写注释，注释中的内容不会被模板引擎编译

 

语法：<!--htmlcache-->……<!--/htmlcache-->

　　包含在本语法中的模板内容，将直接缓存显示的静态HTML结果，如配合_TPLCacheLimit_常量将可以动态更新静态缓存部分的内容，否则只有当模板文件更改的时候才会更新静态缓存部分。

 

 

用户模板替换包

　　用户模板替换包为方便自由替换模板内容所用，可以用于语言包的设计，或者一些通用写法的简略

语法：{#替换包变量#}

　　用户自定义替换包需要按照以下格式书写一个PHP文件。

—————————————————
<?php

$data = array (
‘Welcome to’ => ‘欢迎来到’,
‘PHPSo’ => ‘PHP课堂’
);

?>
—————————————————

　　$data 数组元素的key为替换的变量，数组元素的值为要替换成的内容。

[, 用户模板替换包]：替换包的文件名。
[, 用户模板替换包路径]：替换包的路径，如果不指定，默认为模板路径。

 

语法：定义：<!--func 函数名:函数参数-->……<!--/func-->
　　　调用：<!--func:函数名(参数)-->

　　自定义一个模板函数，你可以把模板中经常重复的内容写进此语法，需要的时候直接调用函数即可。同时调用语法也可以调用其它函数。

如：<!--func aaa:$a,$b-->
　　　　$a:<br>
　　　　<!--loop:$b-->{[name]}<br><!--/loop--> <br>
　　<!--/func-->

　　<!--func:aaa(’for_option’, $for_option)-->

 

语法：<!--require:模板文件-->

　　把指定的子模板文件包含到父模板中，只有当父模板重新缓存时被 require 的子模板才会重新被读取。

如：<!--require:header.htm-->