# 模板配置文件
[TOC]
在`添加首頁模板配置文件`中我們給首頁模板`public/themes/quick_start/portal/index.html`添加了一個模板配置文件,這個配置文件主要用于描述這個模板文件,比如描述它的模板文件名稱,對應的操作,及有哪些模板變量或控件。
模板配置文件和模板文件名是同名的,對于一個模板文件一定要小寫下劃線,如`index.html`, `list_pubu.html`,所以模板配置文件名也是小寫下劃線的,只是文件名后綴是`json`。
一個簡單的模板配置文件必備內容如下:
```
{
"name": "門戶應用首頁", /*模板文件名*/
"action": "portal/Index/index",/*模板文件對應的操作*/
"description": "門戶應用首頁模板文件",/*模板文件描述*/
"order": 5.0,/*模板文件在后臺模板文件列表的排序,小在前*/
"more": {} /*模板文件擴展配置, 一般有vars,widgets兩個屬性*/
}
```
> 更改模板配置文件后,一定記得在后臺更新模板
> 模板安裝時檢查模板文件和模板配置文件是否一一對應,如果不對應是不會安裝此模板文件的
一個包含模板變量和控件的配置文件內容如下:
```
{
"name": "首頁",
"action": "portal/Index/index",
"description": "首頁模板文件",
"order": 6.0,
"more": {
"vars": {
"varName1": {
"title": "測試 text",
"value": "1",
"type": "text",
"tip": "這是一個text",
"rule": {
"require": true
}
}
},
"widgets": {
"widgetName1": {
"title": "所有組件演示",
"display": "1",
"vars": {
"text": {
"title": "測試 text",
"value": "1",
"type": "text",
"tip": "這是一個text",
"rule": {
"require": true
}
}
}
}
}
}
}
```
## 模板變量 var
一個模板配置文件可以添加多個模板變量,模板變量在模板擴展屬性 `more.vars` 里,`varName1`鍵值就是模板變量名,支持多種類型(text,textarea...)的模板變量,具體請看下面的`模板變量類型`章節;不同的變量類型在后臺設置時表現形式不同;
一個常用的`text`類型的變量配置格式如下:
```
"vars": {
"varName1": {
"title": "測試 text", /*后臺設置時 input 的 label*/
"value": "1", /*變量默認值*/
"type": "text", /*變量類型*/
"tip": "這是一個text", /*后臺設置時 input 的 幫助提示*/
"rule": { /*后臺設置時 input 的 驗證規則*/
"require": true
}
}
}
```
## 在模板中輸出模板變量
在前臺模板中,我們把所有模板變量放在`$theme_vars`中,`$theme_vars`就是一個數組,要輸出或使用模板變量只要把它當成`$theme_vars`中的值就可以了,如:
```
{$theme_vars.varName1|default=''}
```
當成 php 變量來用:
```
<php>
echo $theme_vars['varName1']; //記得要判斷一下這個變量是否存在!
</php>
```
## 模板控件 widget
模板控件就是模板里一個顯示塊,我們通過模板控件可以把一個模板分成多個塊,通過設置控件屬性可以設置是否顯示等,一個模板配置文件可以添加多個模板控件,模板控件在模板擴展屬性 `more.widgets` 里,`widgetName1`鍵值就是模板控件名.
一個基本的控件配置格式如下:
```
"widgets": {
"widgetName1": {
"title": "所有組件演示", /*模板控件標題,用于后臺設置*/
"display": "1", /*控件是否顯示,1:顯示;0:不顯示*/
"vars": {/*模板控件變量,和模板變量一樣*/
"text": {
"title": "測試 text",
"value": "1",
"type": "text",
"tip": "這是一個text",
"rule": {
"require": true
}
}
}
}
}
```
## 在模板中使用模板控件
在前臺模板中,我們把所有模板控件放在`$theme_widgets`中,`$theme_widgets`就是一個數組,要使用模板控件只要把它當成`$theme_widgets`中的值就可以了,如:
```
<php>
print_r($theme_widgets['widgetName1']);//記得要判斷一下這個控件是否存在!
</php>
```
你也可以使用 `widget`標簽:
```
<widget name="widgetName1">
<!--輸出控件標題-->
{$widget.title}
<!--調用控件的變量-->
{$widget.vars.varName1|default=''}
或:
<php>
echo $widget['vars']['varName1'];//記得要判斷一下這個變量是否存在!
</php>
</widget>
```
## 公共模板變量,公共模板控件
如果是公共模板文件,應該加上`is_public`屬性,并且設置值為` 1 `,這時這個配置文件里的變量和控件變成公共變量和控件,在每個頁面都加載,如`simpleboot3/public/config.html`的配置文件`simpleboot3/public/config.json`
```
{
"name": "模板全局配置",
"action": "public/Config",/*虛擬的操作地址,并不存在*
"description": "模板全局配置文件",
"is_public": "1",/*默認值為0,開啟后會在每個頁面加載這個配置*/
"order": 0.0,
"more": {
"vars": {
"enable_mobile": {
"title": "手機注冊",
"value": "ThinkCMF",
"type": "select",
"value": 1,
"options": {
"1": "開啟",
"0": "關閉"
},
"tip": ""
}
},
"widgets": {
"widgetName1": {
"title": "所有組件演示", /*模板控件標題,用于后臺設置*/
"display": "1", /*控件是否顯示,1:顯示;0:不顯示*/
"vars": {/*模板控件變量,和模板變量一樣*/
"text": {
"title": "測試 text",
"value": "1",
"type": "text",
"tip": "這是一個text",
"rule": {
"require": true
}
}
}
}
}
}
}
```
> 注意:/\*\*/這樣的注釋請在開發時刪除