Smarty下载
解压
smarty文件夹下的文件。
将Smarty的核心代码拷贝到站点下。
Smarty.class.php
Templates:默认模板文件夹
Templates_c:默认存放文件的文件夹
Cache:存放缓存
Configs:存放配置文件
定义目录分隔符:
注释
{*这是注释*}
Smarty注释和HTML注释的区别
变量
普通变量
第一种声明方法:
第二种声明方法:在模板文件中声明
取值{$name}{$sex}
保留变量
在Smarty中有一个特殊的变量“smarty”,这个变量是保留变量,用来访问用户请求的信息,系统环境变量,常量,类似于PHP中的超全局变量。
1、获得get提交的值:{$smarty.get.name} $_GET
2、获得post提交的值:{$smarty.post.变量名} $_POST
3、万能的获得值的方法 {$smarty.request.变量名} $_REQUEST
4、获取会话
在php中定义一个会话
在模板中获取会话
5、获取cookie,(第一次获取会报错,因为第一次是设置cookie)
6、显示常量
7、取出服务器信息
{$smarty.server.REMOTE_ADDR}
8、取出时间戳
{$smarty.now}
9、其它
{$smarty.version} | 版本号 |
{$smarty.ldelim} | 左界定符 |
{$smarty.rdelim} | 右界定符 |
配置变量
- 在站点下新建configs文件夹,在文件夹中新建smarty.conf文件代码如下:
- 在模板文件中导入文件,并取值
注意:
原因:smarty将css的{解析了。
解决方法:
- 更换定界符。
- 加空格,但是不推荐使用
- 使用{literal}{/literal} literal:原样的,原义的。推荐使用。
3.配置文件中的章节(configs文件夹中)
调用章节
配置变量的注意:
- 配置文件中的注释“#” #注释内容
- 中括号表示节
- 节定义的相当于局部变量
数组
smarty对数组的访问
- 数组【下标】
- 数组.下标
Foreach循环
如果遍历的数组不存在,则执行{foreachelse}部分
foreach内部关键字
语法 | 描述 |
值变量@iteration | 从1开始的序号 |
值变量@index | 从0开始的索引 |
值变量@first | 判断是否是第一个元素 |
值变量@last | 判断是否是最后一个元素 |
值变量@total | 数组的长度 |
值变量@show | 数组是否为空 |
判断
{if 条件}
{elseif 条件}
{else}
{/if}
section循环
只支持索引数组,不支持关联数组。
{section name='自定义变量名' loop='被遍历的数组'}
{/section}
section内置关键字
{$smarty.section.自定义变量名.iteration} | 从1开始 |
{$smarty.section.自定义变量名.index} | 从0开始 |
{$smarty.section.自定义变量名.first} | 是否为第一个 |
{$smarty.section.自定义变量名.last} | 是否为最后一个 |
其他循环
for循环
while循环
表单
html_checkboxes(复选框)
第一种做法(使用output和values)
对应的php文件
预览网页源
第二种做法(用options代替output和values)
html_options(下拉列表)
{html_options}
{html_radio}单选按钮
把已经有的HTML和Smarty结合
Smarty布局(一)
1、在站点下新建一个layout文件夹,在文件夹下新建一个template1.html布局文件代码如下:
2、在模板中的代码
一个模板中可以有多个block.
Smarty布局(二)
可以把中间的部分全部替换,也可以把右边的部分替换,这样就可以实现一个布局文件用于多个模板。
新建布局文件
模板文件中替换main
只替换右侧
包含文件
{include file='文件的路径'}
举例:header.html
Demo9_3.html
Demo9.php
如果公共部分多:用布局文件
如果公共部分少:用包含文件
变量修饰器
使用truncate截取字符串,需要开启服务(php.ini)
在用‘truncate’截取字符串的时候,默认情况下用utf8编码,一个中文在utf8下占用三个字节,容易出现乱码。
缓存
$smarty->caching=1|true;//开启smarty缓存,调用display的时候,如果有缓存,就从缓存中读取。(会自动生成cache文件夹,并生成缓存文件)
缓存文件的更新
- 删除对应的缓存
- 强制更新 $smarty->force_cache
- 更新模板,布局文件、包含文件
- 设置缓存的声明周期。