[TOC]
# 基礎
## tc_include
tc_include是前臺模板包含文件的方法,用于替換原來的include的標簽,實現更多功能
用法:
```html
<tc_include file="Public:nav"/> <!--加載的是當前模板的Public/nav.html-->
<tc_include file="Public/nav"/> <!--加載的是當前模板的Public/nav.html-->
<tc_include file="Portal/sidebar"/> <!--加載的是當前模板的Portal/sidebar.html-->
<tc_include file="User/Profile/nav"/> <!--加載的是用戶模板的User/Profile/nav.html-->
```
## foreach
forech標簽
屬性
`name`:表示數據源;
`item`:表示循環變量;
```html
<foreach name="list" item="vo" >
{$vo.name} {$key}
</foreach>
```
更改屬性key的變量名:
```html
<foreach name="list" item="vo" key="k">
{$vo.name} {$k}
</foreach>
```
## volist
volist標簽通常用于查詢數據集(select方法)的結果輸出,通常模型的select方法返回的結果是一個二維數組,可以直接使用volist標簽進行輸出。 在控制器中首先對模版賦值:
```
$User = M('User');
$list = $User->limit(10)->select();
$this->assign('list',$list);
```
在模版定義如下,循環輸出用戶的編號和姓名:
```
<volist name="list" id="vo">
{$vo.id}:{$vo.name}<br/>
</volist>
```
volist標簽的name屬性表示模板賦值的變量名稱,因此不可隨意在模板文件中改變。id表示當前的循環變量,可以隨意指定,但確保不要和name屬性沖突,例如:
```
<volist name="list" id="data">
{$data.id}:{$data.name}<br/>
</volist>
```
支持輸出查詢結果中的部分數據,例如輸出其中的第5~15條記錄
```
<volist name="list" id="vo" offset="5" length='10'>
{$vo.name}
</volist>
```
輸出偶數記錄
```
<volist name="list" id="vo" mod="2" >
<eq name="mod" value="1">{$vo.name}</eq>
</volist>
```
Mod屬性還用于控制一定記錄的換行,例如:
```
<volist name="list" id="vo" mod="5" >
{$vo.name}
<eq name="mod" value="4"><br/></eq>
</volist>
```
為空的時候輸出提示:
```
<volist name="list" id="vo" empty="暫時沒有數據" >
{$vo.id}|{$vo.name}
</volist>
```
empty屬性不支持直接傳入html語法,但可以支持變量輸出,例如:
```
$this->assign('empty','<span class="empty">沒有數據</span>');
$this->assign('list',$list);
```
然后在模板中使用:
```
<volist name="list" id="vo" empty="$empty" >
{$vo.id}|{$vo.name}
</volist>
```
輸出循環變量
```
<volist name="list" id="vo" key="k" >
{$k}.{$vo.name}
</volist>
```
如果沒有指定key屬性的話,默認使用循環變量i,例如:
```
<volist name="list" id="vo" >
{$i}.{$vo.name}
</volist>
```
如果要輸出數組的索引,可以直接使用key變量,和循環變量不同的是,這個key是由數據本身決定,而不是循環控制的,例如:
```
<volist name="list" id="vo" >
{$key}.{$vo.name}
</volist>
```
模板中可以直接使用函數設定數據集,而不需要在控制器中給模板變量賦值傳入數據集變量,如:
```
<volist name=":fun('arg')" id="vo">
{$vo.name}
</volist>
```
## php
php代碼可以和標簽在模板文件中混合使用,可以在模板文件里面書寫任意的PHP語句代碼 ,包括下面兩種方式:
使用php標簽
例如:
```
<php>echo 'Hello,world!';</php>
```
我們建議需要使用PHP代碼的時候盡量采用php標簽,因為原生的PHP語法可能會被配置禁用而導致解析錯誤。
使用原生php代碼
```
<?php echo 'Hello,world!'; ?>
```
注意:php標簽或者php代碼里面就不能再使用標簽(包括普通標簽和XML標簽)了,因此下面的幾種方式都是無效的:
```
<php><eq name='name'value='value'>value</eq></php>
```
php標簽里面使用了eq標簽,因此無效
```
<php>if( {$user} != 'ThinkPHP' ) echo 'ThinkPHP' ;</php>
```
php標簽里面使用了{$user}普通標簽輸出變量 ,因此無效。
```
<php>if( $user.name != 'ThinkPHP' ) echo 'ThinkPHP' ;</php>
```
php標簽里面使用了 `$user.name` 點語法變量輸出 ,因此無效。
>簡而言之,在PHP標簽里面不能再使用PHP本身不支持的代碼。
如果設置了 `TMPL_DENY_PHP` 參數為 `true`,就不能在模板中使用原生的PHP代碼,但是仍然支持PHP標簽輸出。
## if else
用法示例:
```
<if condition="($name eq 1) OR ($name gt 100) "> value1
<elseif condition="$name eq 2"/>value2
<else /> value3
</if>
```
在`condition`屬性中可以支持`eq`等判斷表達式,同上面的比較標簽,但是不支持帶有”>”、”<”等符號的用法,因為會混淆模板解析,所以下面的用法是錯誤的:
```
<if condition="$id < 5 ">value1
<else /> value2
</if>
```
必須改成:
```
<if condition="$id lt 5 ">value1
<else /> value2
</if>
```
除此之外,我們可以在condition屬性里面使用php代碼,例如:
```
<if condition="strtoupper($user['name']) neq 'THINKPHP'">ThinkPHP
<else /> other Framework
</if>
```
condition屬性可以支持點語法和對象語法,例如: 自動判斷user變量是數組還是對象
```
<if condition="$user.name neq 'ThinkPHP'">ThinkPHP
<else /> other Framework
</if>
```
或者知道user變量是對象
```
<if condition="$user:name neq 'ThinkPHP'">ThinkPHP
<else /> other Framework
</if>
```
由于`if`標簽的`condition`屬性里面基本上使用的是`php`語法,盡可能使用`判斷標簽`和`Switch標簽`會更加簡潔,原則上來說,能夠用`switch`和`比較標簽`解決的盡量不用`if標簽`完成。因為`switch`和`比較標簽`可以使用變量調節器和系統變量。如果某些特殊的要求下面,IF標簽仍然無法滿足要求的話,可以使用原生php代碼或者PHP標簽來直接書寫代碼。
- HBuilder擴展代碼塊
- Sublime擴展代碼塊
- 模板
- 基礎
- 模板標簽
- 前端組件
- 公共模板
- 進階
- 前臺模板
- 房產裝修風格
- 博客類模板
- 企業站-監控模板
- 后臺模板
- 漂亮的后臺模板
- ThinkCMF 1.6 后臺界面升級
- 新的模板
- 后臺UI
- H+后臺主題
- Ace Admin
- 信息系統(橙藍)
- 阿里云UI
- 不錯的網站
- 常見問題
- dedecms 模板修改為 newthink 模板目錄的步驟
- 網站信息 新增條目方法
- 系統切換中英文
- 2.3 門戶模板制作
- 文章列表頁制作
- 文章內容頁制作
- 頁面制作
- 獲取文章的各種方式
- 熱門文章組件制作
- SEO制作
- 文章相冊制作
- 文章列表推薦功能制作
- 文章列表置頂功能制作
- 面包屑制作
- 格式化