# 创建模板&语言包
## 模板命名
模板位于`/Var/Template/`目录下。
该目录下,以模板名作为文件夹名称。
例如模板`default`就应该位于`/Var/Template/default/`目录下。
在模板目录下,就是模板了。模板也可以根据分类,存储在子目录下。
例如`default`模板下`System`分类的模板就在`/Var/Template/default/System/`下。
而一个模板,存储在分类目录下或模板目录下。那么,它是如何命名的呢?
`[模板名称].tpl`。例如`Index.tpl`。
再举两个例子,假设系统使用的模板名称叫做`default`:
1. 没有分类,名称叫做`Index`的模板,应该是 `/Var/Template/default/Index.tpl` 文件。
2. 分类为`Article`,名称叫做`Show`的模板,应该是 `/Var/Template/default/Article/Show.tpl` 文件。
## 语言包命名
语言包位于`/Var/Language/` 目录下。
使用`[语言包名称].json`命名。例如语言包`zh_cn`就应该是`/Var/Language/zh_cn.json`文件。
## 创建语言包
我们已经给出了`zh_cn.json`和`en_us.json`两个示例。
现在,我们来创建`jp_jp.json`。
语言包的格式比较随便,只要是json就行,他会作为一个数组加载到模板的`$L`变量中。
而XPHP系统需要的语言包,位于其中的`System`节点下。
先给出一个`zh_cn.json`的示例。
```json
{
"System" : {
"Error" : "错误",
"WeHadRecordThisError" : "我们已经记录这次错误,给您带来不便,抱歉!",
"jumpNow" : "立即跳转",
"SecondsAfterAutoJump" : "秒后自动跳转",
"BackHome" : "返回首页"
},
"Index" : {
"WelcomeTo" : "欢迎来到"
}
}
```
而有了一个语言包,转换成其他语言就非常方便。例如`jp_jp.json`:
```json
{
"System" : {
"Error" : "エラー",
"WeHadRecordThisError" : "ご不便を、このエラーを記録してきた、申し訳ありません!",
"jumpNow" : "すぐにジャンプ",
"SecondsAfterAutoJump" : "秒は自動的にジャンプした後、",
"BackHome" : "リターン家"
},
"Index" : {
"WelcomeTo" : "歓迎来ます"
}
}
```
## 创建模板
模板的语法很简单,他其实就是一个有两个特殊语法的html文件。
在模板中,`{{ $var }}`和`{{# echo $var; }}`和`<?=$var?>`和`<?php echo $var; ?>`的结果是等效的。
`{{# //some code }}`和`<?php //some code ?>`是等效的。
所有在控制器中的`$this->Data`变量中的内容,都会被加载到全局变量中。
例如`$this->Data['fool']` 在模板中可以通过 `$fool` 或者 `$this->vars['fool']`访问。
在模板中,如果需要引用另一个模板,可以通过 `{{# $this->need("模板名"); }}` 实现。
在模板中,语言包内容已经被加载到`$L`中,通过`$L`变量访问。
在模板中,本模板所在目录已经被加载到变量`$TplDir`中,如果需要访问模板目录下的静态资源,例如模板目录下的`jquery.min.js`,您可以这么写:
```handlebars
<script src="{{ $TplDir }}jquery.min.js" type="text/javascript"></script>
```
最后,附上一个样例模板:
```handlebars
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>{{ $L['Index']['WelcomeTo'] }} XPHP!</title>
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
</head>
<body>
<style>
body{
margin:0;
padding:30px;
font:12px/1.5 "Microsoft Yahei UI",Helvetica,Arial,Verdana,sans-serif;
}
h1{
margin:0;
font-size:48px;
font-weight:normal;
line-height:48px;
}
h1{
margin:0;
font-size:38px;
font-weight:normal;
line-height:48px;
}
strong{
display:inline-block;
width:65px;
}
</style>
<table border="0" width="100%" height="100%">
<tr valign="middle" align="center">
<td><h1>XPHP</h1></td>
</tr>
<tr valign="middle" align="center">
<td><h3>Version {{ $Version }}</h3></td>
</tr>
</table>
</body>
</html>
```
## 在控制器中引用模板
只需要:
```php
return $this->View("[模板名称]");
```
例如:
```php
return $this->View("Index");
```
```php
return $this->View("Article/Show");
```