1 | --jishang 为什么要修改左右定界符 -- 因为很容易和js,css冲突的! !! # # ThinkPHP 3.1.2 模板的使用技巧 # 讲师:赵桐正 微博:http://weibo.com/zhaotongzheng 本节课大纲: 一、模板包含 <include file="完整模板文件名" /> <include file="./Tpl/default/Public/header.html" /> <include file="read" /> <include file="Public:header" /> <include file="blue:User:read" /> <include file="$tplName" /> <include file="header" title="ThinkPHP框架"keywords="开源WEB开发框架"/> 在模板中变量用\[变量\]接受 <include file='file1,file2' /> 二、模板渲染 1、自动开启模板渲染 设置配置文件 'LAYOUT\_ON'=>true,//开启模板渲染 准备一个模板渲染页面,在页面中使用{\_\_CONTENT__}接受具体模板页面的内容 如果在摸一个具体模板中不希望使用渲染模板,可以在页首添加{\_\_NOCONTENT\_\_} {\_\_NOLAYOUT\_\_} 2、不开启自动模板渲染可以在每一个具体页面的页首添加 <layout name='layout'/> 会自动组装成一个 完整的页面!~~ 3.使用技巧 在渲染模板文件中也可以使用其他模板文件的内容 <include file='Public:header'/> <body> <p>这里是渲染页面!!!</p> {\_\_CONTENT\_\_} </body> </html> 三、模板的继承 <block name = 'body' > </block> 模板继承// <!\[CDATA\[ $(function(){ $(window).resize(function(){ $('.book-content').css('min-height', $(window).height() - 130); }).resize(); //表格隔行变色 $('table').TableColor(); //代码高亮 prettyPrint(); }); //表格隔行变色插件 $.fn.TableColor = function(){ return $(this).each(function(){ if(this.nodeName.toLowerCase() != 'table') return; var self = $(this); self.find('tr').each(function(index) { var \_this = $(this); if(index % 2 == 0){ \_this.addClass('add'); } else { \_this.addClass('even'); } \_this.hover( function(){\_this.addClass('hover')}, function(){\_this.removeClass('hover')} ); }); }); } // \]\]> |
在当前子模板中,只能定义区块而不能定义其他的模板内容,否则将会直接忽略,并且只能定义基础模板中已经定义的区块。
例如,如果采用下面的定义:1
2
3
41. <blockname="title"><title>{$title}</title></block>
2. <ahref="/">首页</a>
3. <ahref="/info/">资讯</a>
4. <ahref="/bbs/">论坛</a>
导航部分将是无效的,不会显示在模板中。
在子模板中,可以对基础模板中的区块进行重载定义,如果没有重新定义的话,则表示沿用基础模板中的区块定义,如果定义了一个空的区块,则表示删除基础模板中的该区块内容。
上面的例子,我们就把left区块的内容删除了,其他的区块都进行了重载。
子模板中的区块定义顺序是随意的,模板继承的用法关键在于基础模板如何布局和设计规划了,如果结合原来的布局功能,则会更加灵活。
1 | 模板继承// <!\[CDATA\[ |
一个模板中可以定义任意多个名称标识不重复的区块,例如下面定义了一个base.html基础模板:1
2
3
4
5
6
7
8
9
10
11
12
131. <html>
2. <head>
3. <metahttp-equiv="Content-Type"content="text/html; charset=utf-8">
4. <blockname="title"><title>标题</title></block>
5. </head>
6. <body>
7. <blockname="menu">菜单</block>
8. <blockname="left">左边分栏</block>
9. <blockname="main">主内容</block>
10. <blockname="right">右边分栏</block>
11. <blockname="footer">底部</block>
12. </body>
13. </html>
然后我们在子模板(其实是当前操作的入口模板)中使用继承:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
231. <extendname="base"/>
2. <blockname="title"><title>{$title}</title></block>
3. <blockname="menu">
4. <ahref="/">首页</a>
5. <ahref="/info/">资讯</a>
6. <ahref="/bbs/">论坛</a>
7. </block>
8. <blockname="left"></block>
9. <blockname="content">
10. <volistname="list"id="vo">
11. <ahref="/new/{$vo.id}">{$vo.title}</a><br/>
12. {$vo.content}
13. </volist>
14. </block>
15. <blockname="right">
16. 最新资讯:
17. <volistname="news"id="new">
18. <ahref="/new/{$new.id}">{$new.title}</a><br/>
19. </volist>
20. </block>
21. <blockname="footer">
22. @ThinkPHP2012 版权所有
23. </block>