THINKPHP19_20

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
4
1.  <blockname="title"><title>{$title}</title></block>
2. <ahref="/">首页</a>
3. <ahref="/info/">资讯</a>
4. <ahref="/bbs/">论坛</a>

导航部分将是无效的,不会显示在模板中。
在子模板中,可以对基础模板中的区块进行重载定义,如果没有重新定义的话,则表示沿用基础模板中的区块定义,如果定义了一个空的区块,则表示删除基础模板中的该区块内容。
上面的例子,我们就把left区块的内容删除了,其他的区块都进行了重载。
子模板中的区块定义顺序是随意的,模板继承的用法关键在于基础模板如何布局和设计规划了,如果结合原来的布局功能,则会更加灵活。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
模板继承// <!\[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')}
);
});
});
}
// \]\]>

一个模板中可以定义任意多个名称标识不重复的区块,例如下面定义了一个base.html基础模板:

1
2
3
4
5
6
7
8
9
10
11
12
13
1.  <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
23
1.  <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>

(っ•̀ω•́)っ✎⁾⁾ 坚持技术学习、内容输出与分享,您的支持将鼓励我继续创作!(*/ω\*)
( • ̀ω•́ )✧如有疑问或需要技术讨论,请留言或发邮件到 aclearzhang@qq.com.(*・ω< ) 
  • 本文作者:: AClearZhang
  • 本文链接:: 314.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!