

#tplenglish#英文版模版

* 目标-添加英文版整套模版：
 - 假设：假如已经架构模型(enabt:英文版介绍; enews:英文版新闻)
 - 参考：二次开发 >> 完整示例
 - 增加一套英文版模板，展示以上模型
 
* 增加模板目录：
 - 增加ven目录：/views/ven
 - 增加子目录：_config（放当前模板配置），_ctrls（放当前模板：控制器/扩展函数）
 - 其他子目录参考现有模板，自行规划
 - 增加img/js/css资源目录：
 - 增加子目录：b_img（放图片图标），assets（放js/css资源）
 
* 增加入口文件：
 - 目录：\root\run\
 - 复制：eng.php 为 english.php，或直接用eng.php文件
 - 修改：`$_cbase['tpl']['vdir'] = 'ven';`
 - 修改：$_cbase['sys']['lang'] = 'en'; // 切换语言
 - ven即为模板目录
 
* 添加配置：
 - 文件：/root/cfgs/sycfg/sy_vopcfg.php
 - $_sy_vopcfg['tpl']中 添加一项 `'ven' => array('英文版','/english.php'),`
 - 访问地址：/english.php，Enjoy！
 
* 参考提示：
 - 选现有的复制一份去修改：如chn(中文版)
 - 参考目录：/views/下：dev, chn, adm


#tplenmodel#模型配置

* 复制首页配置：
 - va_home.php，从/views/chn/_config 到/views/ven/_config目录
* 复制英文版介绍配置：
 - vc_about.php，从/views/chn/_config 到/views/ven/_config目录
 - 并改名为：vc_enabt.php，(enabt为模型标识)
* 复制英文版新闻配置：
 - vc_news.php，从/views/chn/_config 到/views/ven/_config目录
 - 并改名为：vc_enews.php，(enews为模型标识)
* 模版/资源等：
 - 复制相关模版/静态资源：从/views/chn/ 到/views/ven/目录
 - 根据需要，修改配置，模版，资源……


#vx_modfmt#模型配置规范

* va_home:首页配置
 - c:基本配置
 - m:模块首页模板
 - u:(自定义)配置用户登录注册链接  
    见/views/umc/_config/va_home.php

* vc_model:系统模型
 - model为模型ID，一个模型一个文件

* ve_extra:扩展模型
 - extra为模型ID，一个扩展模型一个文件


#app_diy#模板套件工具

* 目的：diy做一套前台显示的样例模板

* 说明：
 - diy地址：{proj}/root/tools/exdiy/mktpl.php，为安全，只能本地ip或机器名打开；
 - 默认，只创建显示一个系统 [文档/资讯]模型 和 一个hello扩展模型；
 - 丰富模板，添加显示更多模型，请手动了！

* 想法来源：
 - Symfony 使用“app/console generate:bundle”命令创建Bundle；
 - 它为什么用命令弄得那么高深，而不直接做个php网页界面来实现？
 - 本系统，仿照Symfony创建Bundle，实现diy做一套前台显示的样例模板；
 - 本系统，并命名为“模板套件工具”，感觉不是很合适，后续改名吧……


#tplbug#注意事项(bug)

* 这是模板解析中存在的bug；  

 - 以下1,2问题，不想从解析中解决（替换来替换去），
 - 请根据情况避开（其实很好避开）使用；

* 【1】 tpl的html注释中用花括号({})输出变量：

```
// 如：<!--{=$this->tplname}-->
// -=>解析成：<?php echo @$this->tplname; ?>
// -=>应当为：<!--<?php echo @$this->tplname; ?>-->
//  解决：在前后加个如空格等特殊符号如：<!--/{=$this->tplname}/-->  
// 或 评论(<i id="jsid_count_{=$pmod}:{=$did}">0<!--`{=$this->mod},cnt_{=$pmod}`--></i>条) (变量需要`符号分开)
```

* 【2】 tpl的php块中输出变量，不能在双引号("")里面用花括号({})把变量包起来：

```
// !!! 本问题在v3.9已经解决, old is:{$vname} -=> new is:{=$vname}
如：{php echo "userip={$_cbase['run']['userip']};"; }
-=>解析成：<?php echo "userip=<?php echo @$_cbase['run']['userip']; ?>;"; ?>
-=>应当为：<?php echo "userip=".@$_cbase['run']['userip'].";"; ?>
解决1：用原始的点(.)连接字符串：{php echo "userip=".@$_cbase['run']['userip'].";"; }
解决2：对大块PHP代码，不需要模板解析，可用如下类似语法包含文件：
{php include_once vopTpls::tinc('m_tppart/tpfile',0); } 
或：{code:"dev:tools/a-cfgs"}
-=> 相当于inc文件（此方式不会使用模板解析）：
{当前模板}/m_tppart/tpfile.php 
```


#vc_i18n#多语言部署

* 多语言包配置：
 - 配置语言包位置：/imcat/lang/，
 - 按类别分目录存放；一个目录下，一个语言包一个文件
 - 入口文件：增加申明语言包：$_cbase['sys']['lang'] = 'en'; // 切换语言

* 多语言模版调用

```
    * php 
     - basLang::show('core.page_First')
     - lang('admin.adm_center') 
     - <?php lang('tools.start_setup',0) ?>
    * tpl
     - {lang(core.view_times,$click)} 
     - {lang(core.sys_name)}
    * js
     - lang('jcore.sub_key')
```
