1.模板的使用
1.1.规则
模板文件夹下 [tpl]/ [分组文件夹/] [模板主题文件夹/] 和模块名同名的文件夹[index]/和方法名同名的文件[index].html(.tpl)
更换模板文件的后缀名
假设我们需要将文件名设置.tql,应在conf/config.php 文件中添加如下语句:
'TMPL_TEMPLATE_SUFFIX'=>'.tpl',//更改模板文件后缀名
接着,我么访问我们页面:http://127.0.0.1/thinkphp/index.php/Index/index,出现模块不存在,因为我们的文件后缀名为.html,而它此时默认访问的文件后缀名为 .tql,因此显示文件名不存在。需要将 /tql/Index/index.html的文件名改为 .tql才可以哦!
1.2、修改模板文件目录层次
有时我们调用模板文件【/tpl/Index/index.html】时可能会觉得模板文件夹太深了,我们可以直接在tpl目录下新建一个模板文件 模板名_方法名.后缀名
【 Index_index.html】文件。然后在conf/config.php 文件中添加如下语句:
'TMPL_FILE_DEPR'=>'_',//修改模板文件目录层次
访问http://127.0.0.1/thinkphp/index.php/Index/index.html
1.3.模板主题
以优快云主题为例,假设我们给博客主页选择的主题不一样,他所显示的页面风格也将会有所不同,这个便是模板主题,我们可以将它放在一个专门的文件夹便于我们进行选择。
我们可以在tpl目录下新建文件夹 my作为主题文件夹,设置my文件夹为默认的模板主题文件夹,应在 /conf/config.php 文件中添加如下语句:
'DEFAULT_THEME'=>'my,//设置默认模板主题
这样直接访问http://127.0.0.1/thinkphp/index.php/Index/index.html,会显示如下,
报错,因为在该my文件夹中不存在Index/index.html文件,因此我们需要将 /tpl/index文件夹复制到 my文件夹下面
访问:http://127.0.0.1/thinkphp/index.php/Index/index.html
动态更改模板主题
类似于上面方法,我们再建一个文件夹,名字为your,即这是新的模板主题文件夹 your。index.html的背景为黄色。在config.php文件中添加如下语句:
'DEFAULT_THEME'=>'my',//设置默认模板主题
'TMPL_DETECT_THEME'=>true,//自动侦测模板主题
'THEME_LIST'=>'your,my',//支持的模板主题列表
在链接后面加 /t/模板文件夹名称,将可以访问到我们想要的模板主题。
例如: 访问http://127.0.0.1/thinkphp/index.php/Index/index/t/your,将可以访问到your的模板文件。
下面,我们对于动态修改模板文件做一个小总结:
如何动态修改模板主题?
1、在后台准备一个功能,修改config.php文件中的默认模板项
2、通过url传递 t=主题 参数可以修改不同的模板
'DEFAULT_THEME'=>'your',//设置默认模板主题
'TMPL_DETECT_THEME'=>true,//自动侦测模板主题
'THEME_LIST'=>'your,my',//支持的模板主题列表
2.输出模板内容
a、display
1.display中没有参数
$this->display();
2.可以带参数
$this->display(本模块文件夹下的其他模板文件);
$this->display('index2');
$this->display(其他文件夹下的模板文件);
$this->display('Public:error');//注意,仅仅需要在Tpl下有Public文件夹以及其中的error.html即可,不需要一定有Public模块
$this->display(其他主题下的 文件夹下的 模板文件);//需要开启主题支持
$this->display('my:Index:index');
例如我们之前在IndexAction.class.php 用的 $this->display() 方法,这个默认调用的就是 tpl文件夹下面与 模板名Index同名的文件夹下面与index方法同名的 index.html 文件。
假设我们需要访问本模块下的其他文件(index2.html文件)
那么我们应该在display中廷加一个参数,变为
$this->display('index2');
其他模板下的模板文件,利用的语句如下:
$this->display(其他模板名 : 模板文件名);
其他主题下的模板文件,利用的语句如下:
$this->display(其他主题名字: 模板名: 模板文件名);