[TOC]
## 变量输出
### 在 html 模板页面上直接输出变量的值.
**语法**
~~~
{$var} ⇔ <?php echo $var;?>
~~~
**示例**
~~~
<table class="tb">
<tr>
<td>{$row['title']}</td>
<td>{$row['name']}</td>
</tr>
</table>
~~~
~~~
<p>欢迎你:{$_W['member']['username']}</p>
~~~
## 语句嵌入
**语法**
~~~
{php statement;}
~~~
**示例**
~~~
{php $i = 1;}
~~~
~~~
{php echo date('Y-m-d H:i:s', $row['dateline']);}
~~~
## 条件语法
~~~
{if expression_statement_1}
{elseif expression_statement_2}
{elseif expression_statement_3}
…
{else}
{/if}
~~~
**示例**
~~~
{if $row['flag'] == '-1' && $row['role'] != 'admin'}被禁用{/if}
~~~
~~~
{if $row['role'] == 'admin'}
管理员
{else}
普通用户
{/if}
~~~
~~~
{if $row['role'] == 'founder'}
创始人
{else if $row['role'] == 'admin'}
管理员
{else}
普通用户
{/if}
~~~
## 循环语法
**语法**
~~~
{loop $list $row}
{/loop}
{loop $list $key $value}
{/loop}
~~~
**示例**
~~~
{loop $wechats $wechat}
<li>Name: {$wechat['name']}</li>
{/loop}
~~~
~~~
{loop $wechats $weid $wechat}
<li>Id: {$weid}; Name: {$wechat['name']}</li>
{/loop}
~~~
## **模板嵌套**
**可以在模板的当前位置嵌入另一个或多个模板一次或多次**
**语法**
~~~
{template $name}
~~~
**说明**
> 主系统(app/web)的模板页面调用模板方式, 如: {template 'common/header'} , 斜杠前面为文件夹名称, 后面为模板名称
> 自定义模块(addons)中调用本模块模板的方式, 如: {template 'setting'} 来实现'./addons/模块/template/setting.html' 的调用
**示例**
~~~
{template 'common/header'} <!-- 嵌入标准页头。-->
<p>可以嵌套多个模板</p>
{template 'test'} <!-- 模块模板嵌入模块内模板。-->
{template 'common/footer'} <!-- 嵌入标准页脚。-->
~~~
## 数据获取标签
**微擎系统内置了一种 数据获取标签 来直接呈现 自定义标签函数 返回的数据.**
### 自定义标签函数
在模块中使用**数据获取标签**, 首先要在模块目录下创建 **model.php** 文件, 在该文件中定义标签函数, 标签函数的定义如下所示, 所有参数均从 **$params** 中获取.
**model.php**
~~~
function function_name($params = array()) {
}
~~~
### 数据获取标签
~~~
{data module='' func='' assign='' item='' return='' limit='' index='iteration'}
{/data}
~~~
| 参数名称 | 说明 |
| -- | -- |
| module | 指定获取数据的模块。可以在任意模板页面调用任意模块下定义的标签函数, 缺省则使用已存在的标签函数. |
| func | 指定获取数据的函数,此函数定义在自定义模块目录下的 model.php 文件中 |
| assign | 指定该标签得到数据后,存入的变量名称。如果为空则存在与func同名的变量中,方便在下方的代码中使用。 |
| item | 指定循环体内的迭代时的变量名。相当于 foreach ($foo as $i ⇒ $row) 中 $row变量。 |
| return | 为true时,获取到数据后作为变量返回;为false时,获取到数据后直接循环输出,默认为false |
| limit | 指定获取变量时条数, 通常用于标签函数中拼接 sql 限制获取数据行数,$sql .= ” limit {$params['limit']}“ |
| index | 提供循环中的索引值,从 1开始。默认变量名为 ‘iteration’,也可以自定义变量名。通过{$row['iteration']} 调用。 |
注意: 以上列表是 **标签函数** 预设处理的输入变量, 开发者可以在标签中任意传入所需参数, 在标签函数中访问**$params**即可
**示例**
~~~
{data func='site_navs' section='2' item='nav' a='1' b='2' c='3'}
{$nav['html']} <br>
{/data}
~~~
目前支持的获取数据 function:见【微站模版】