【关于模版】2014/10/13
什么是模板?
实现html和PHP分离的就是模板
学习路径
1、自定义模板
2、smarty的工作流程
1)把需要赋值的全局变量 赋值 塞到对象内部的属性上
一个数组里
2)编译模板 将对应的{$标签} 转换为PHP代码
3)引入编译后的文件
3、使用smarty的步骤
1)smarty是一个类 要使用必须先引入实例化
2)assign 赋值
3)display{编译到输出}
缺点:
模版编译浪费时间
一次编译,不再编译
判断条件:
1)模板编译文件是否存在
在编译的时候如果模版已经存在,则不再次编译重写
file_exists()
2)编译文件的时间要大于模板修改的时间
filemtime()
同时满足上面两个条件才不重新进行编译
一、smarty的使用
1、下载smarty的下载、
www.smarty.net
2、使用
1)引入smarty
demo文件夹是使用的例子实例
lib下的 smarty.class.php 引入
2)实例化
3)赋值
4)在temp目录下创建模板 news.html
5)显示
问题1:关于多个模板文件夹的使用
解决:不同的PHP文件可以设置不同的temlate_dir
问题2:可以赋值数组、对象 怎么赋值
解决:数组赋值
问题3:如果遇到 css{} script{}冲突如何解决
解决:1)修改smarty的默认定界符
2) 使用<literal></literal>标签将冲突大括号前后加上
二、变量的来源
1、使用assign方法进行分配
2、系统保留变量
$smarty.开头的变量会自动获取系统变量
$_GET/$_POST/$_SESSION 等等
{$smarty.get.id } 等价于 $_GET['id']
显示常量
$smarty.const.常量名
3、配置文件中的配置变量
如网站底部的电话信息 等写入配置文件
1)配置文件一般以.conf为后缀名
2)文件内容如下
3)配置config_dir
4)将配置文件加入配置目录
5)在模板文件中引入配置文件
6)引入配置文件变量内容
三、模板中变量的操作
1、变量的计算
{3+$age} smarty2.6及以前 不支持
smarty3以后可以支持 不推荐数字写前面
四、模板中的逻辑操作
1、选择分支
1)if...else
2)if...elseif...else
2、循环
1)for 循环 (smarty3新增)
$i@iteration //当前计数器
$i@total //总的计数器
3)while (smarty3新增)
其中++只能放在变量后面
4)foreach 循环
5)section 功能多配置选项多 功能和
foreach差不多
不能循环关联数组 只能循环索引为连续
下标的数组
www.smarty.net/docs/zh_CN/language/function
语法如下:
其中loop就是待循环的数组
name 是循环中的临时变量 即把键赋给good
step 为步长 不写 默认为1
五、变量调节器
是在模板中修改变量显示形式的一种功能
即通过变量调节器 来对变量进行修改
本质就是通过函数的调用传参 返回值进行输出
如 将日期和时间进行改变
六、缓存
七、模板的引入与使用
1)将smarty库文件拷入项目
2)引入smarty.class.php
3) new smarty
解决自动加载函数间的冲突
将 __autoload()
函数命名为自定义函数 如:aload()
bload()
然后使用系统自动加载注册函数
冲突解决
八、模板内文件的包含
什么是模板?
实现html和PHP分离的就是模板
学习路径
1、自定义模板
html {$content}
controller
str_replace('{','<?PHP',$str);
str_replace('}','?>',$str);
2、smarty的工作流程
1)把需要赋值的全局变量 赋值 塞到对象内部的属性上
一个数组里
2)编译模板 将对应的{$标签} 转换为PHP代码
3)引入编译后的文件
3、使用smarty的步骤
1)smarty是一个类 要使用必须先引入实例化
2)assign 赋值
3)display{编译到输出}
缺点:
模版编译浪费时间
一次编译,不再编译
判断条件:
1)模板编译文件是否存在
在编译的时候如果模版已经存在,则不再次编译重写
file_exists()
2)编译文件的时间要大于模板修改的时间
filemtime()
同时满足上面两个条件才不重新进行编译
一、smarty的使用
1、下载smarty的下载、
www.smarty.net
2、使用
1)引入smarty
demo文件夹是使用的例子实例
lib下的 smarty.class.php 引入
require('smarty.class.php');
2)实例化
$smarty = new Smarty();
//配置模板目录
$smarty->template_dir = './temp';
$smarty->compile_dir = './comp';
3)赋值
$smarty->assign('title','变量例子');
4)在temp目录下创建模板 news.html
{$title} 放入要显示的标签内
5)显示
$smarty->display('news.html');
问题1:关于多个模板文件夹的使用
解决:不同的PHP文件可以设置不同的temlate_dir
问题2:可以赋值数组、对象 怎么赋值
解决:数组赋值
$smarty->assign('zhf',array('name'=>'张飞','age'=>'18'));
显示:{$zhf.name}
对象赋值 同上
显示:{$zhf->name}
问题3:如果遇到 css{} script{}冲突如何解决
解决:1)修改smarty的默认定界符
$smarty->left_delimiter = '{>';
$smarty->left_delimiter = '<}';
2) 使用<literal></literal>标签将冲突大括号前后加上
二、变量的来源
1、使用assign方法进行分配
$smarty->assign('name','shibae');
2、系统保留变量
$smarty.开头的变量会自动获取系统变量
$_GET/$_POST/$_SESSION 等等
{$smarty.get.id } 等价于 $_GET['id']
显示常量
$smarty.const.常量名
3、配置文件中的配置变量
如网站底部的电话信息 等写入配置文件
1)配置文件一般以.conf为后缀名
2)文件内容如下
name='zhangfei'
tel='1385895654'
3)配置config_dir
$smarty->config_dir='./conf';
4)将配置文件加入配置目录
5)在模板文件中引入配置文件
{config_load file='site.conf'}
6)引入配置文件变量内容
{$smarty.config.site}
或 {#site#}
三、模板中变量的操作
1、变量的计算
{$age+12} //可以参与运算 但是不推荐
或{$age - $num}
{3+$age} smarty2.6及以前 不支持
smarty3以后可以支持 不推荐数字写前面
四、模板中的逻辑操作
1、选择分支
1)if...else
{if $age < $num}
内容1
{else}
内容2
{/if}
2)if...elseif...else
{if $smarty.get.today || $smarty.get.today == 7 }
语句1
{else if $smarty.get.today >0 && $smarty.get.today < 6}
语句2
{else}
语句3
2、循环
1)for 循环 (smarty3新增)
只能从小到大 要从大到小就用while
{for $i=1 to 10}
循环部分。。。
{/for}
//限定步长,默认为1
{for $i=1 to 10 step=2}
循环部分。。。
{/for}
$i@iteration //当前计数器
$i@total //总的计数器
3)while (smarty3新增)
其中++只能放在变量后面
{while $age < 10}
{$age++}
{/while}
4)foreach 循环
<pre name="code" class="html">smarty3 中的foreach结构
{foreach $goods as $k => $v }
smarty3 中的foreach结构
{foreach $goods as $k => $v }
{/foreach}
这里的计数器将 $i替换成 $v就可用了
$v@iteration
$v@first
$v@last
smarty2中的 foreach结构
{foreach from = $goods key=k item=v}
{/foreach}
5)section 功能多配置选项多 功能和
foreach差不多
不能循环关联数组 只能循环索引为连续
下标的数组
www.smarty.net/docs/zh_CN/language/function
语法如下:
其中loop就是待循环的数组
name 是循环中的临时变量 即把键赋给good
step 为步长 不写 默认为1
{section name=good loop = $goods step=2}
{$goods[good].goods_name}
{/section}
五、变量调节器
是在模板中修改变量显示形式的一种功能
即通过变量调节器 来对变量进行修改
本质就是通过函数的调用传参 返回值进行输出
如 将日期和时间进行改变
{$timestamp|date_format:'%Y%m%d %H%M%S'}
{$title|lower}
六、缓存
//判断是否缓存
$smarty->is_cached('index.html', $id)
//局部不缓存
{nocache} 不缓存区。。。{/nocache}
七、模板的引入与使用
1)将smarty库文件拷入项目
2)引入smarty.class.php
3) new smarty
解决自动加载函数间的冲突
将 __autoload()
函数命名为自定义函数 如:aload()
bload()
然后使用系统自动加载注册函数
spl_autoload_register('aload');
spl_autoload_register('bload')
冲突解决
八、模板内文件的包含
{include file="header.html"}