A-A+
关于TP模板的目录设置和渲染问题
最近的一些TP配置实战经验总结。记录如下。
站点目录/Common/Conf/config.php中:
- // 修改模板的目录 (此时视图目录失效)
- // 原来:/站点目录/模块目录/视图目录/ [模板主题/]控制器名/动作名.后缀
- // 现在:/模板目录/模块目录/ [模板主题/]控制器名/动作名.后缀
- 'VIEW_PATH'=>'./Public/',
- // 指定视图目录,默认是View
- 'DEFAULT_V_LAYER'=>'View',
- // 指定模板主题(不指定则无主题)
- 'DEFAULT_THEME'=>'Red',
- // 用下划线修改目录层次,
- // 原来:视图目录下新建ControlName文件夹,action.tpl文件
- 'TMPL_FILE_DEPR'=>'_',
- // 现在:视图目录下新建ControlName_action.tpl文件
- // 指定模板文件后缀,默认是html
- 'TMPL_TEMPLATE_SUFFIX'=>'.tpl',
在控制器的方法文件中:
- class UserController extends Controller {
- public function vv(){
- // $this->display(); // 默认路径
- // $this->assign('abc','new title'); // 指定变量和值
- // $this->theme('default')->display(); // 指定模板主题
- // $this->display('age'); // 指定模板文件
- // $this->theme('Blue')->display('Admin@Person/salary/age'); //位置①
- //指定 模板主题、模块、控制器、模板文件
- $this->display('./Template/Public/User/index.html'); //位置②
- //指定 绝对模板文件的绝对路径
- }
- }
需要说明的是:
位置①:如果在配置文件中设置有 'TMPL_FILE_DEPR'=>'_',
那么此时路径为:站点目录/Admin/视图目录/Blue/User_Person/salary/age.tpl
位置②:当绝对模板文件的路径存在并正确时,其它关于模板路径的配置全部失效,以此绝对路径为准
当使用T()方法获取或设置模板地址时:
T()返回的是当前模板的地址:
设置时,若使用了 'TMPL_FILE_DEPR'=>'_',
- T('Admin@age') = ./站点/Admin/视图目录/Red/User_age.tpl
- T ('Admin@salary/age') = ./站点/Admin/视图目录/Red/salary_age.tpl
- T ('Admin@Person/salary/age' ) = ./站点/Admin/视图目录/Person/salary_age.tpl
注意与直接作display()参数的区别:
- display('Admin@age') ./站点/Admin/视图目录/Red/User_age.tpl
- display('Admin@salary/age') ./站点/Admin/视图目录/Red/User_salary/age.tpl
- display('Admin@Person/salary/age') ./站点/Admin/视图目录/Red/User_Person/salary/age.tpl
若使用$this->display(T());同样可以渲染
一、此时不可再设置模板主题,即$this->theme('default')->display(T())时主题设置部分视为无效。
此时模板主题使用配置文件中的设置。
二、此时的路径已被转化为绝对路径,即相当于位置②的用法,只要路径正确即可。