🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 创建模板&语言包 ## 模板命名 模板位于`/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"); ```