Smarty:模板技术

实现功能:前后分离。

原理:主要通过Smarty核心类实现,调用display方法,将模板文件读取,用正则进行替换,替换完保存到临时文
件,将临时文件加载到当前页面。

配置文件(入口文件):对Smarty类进行实例化,设置文件的保存路径

如果在页面使用Smarty模板,需要将配置文件引入到当前页面。

浏览器要访问的页面是后台页面(.php),最终在浏览器看到的页面是模板页面(.html或.tpl)

模板里面的文件路径:基于.php文件的相对路径,如果不使用相对路径可以使用绝对路径。

模板里面显示变量:

1.变量要写在Smarty标记之间,变量名以$开头

<{$test}>

2.支持所有类的数据,包括数组(关联数组),对象

关联数组在模板显示的时候,除了可以使用php语法之外,还支持点语法 <{$attr.name}>

模板里面读取配置文件

1.将配置文件加载到当前页面
<{config_load file='test.conf'}>

2.读取配置中的内容
<{#color#}>

3.如果配置文件中分了块,怎么读某一块的配置
<{config_load file='test.conf' section='块名'}>

Smarty保留变量

$smarty.const 读取常量  例如:CSS,JS,图片的存放路口

变量调节器:

关键字:modifier

1.系统自带的变量调节器:转大写 转小写 首字母大写 截取字符串 拼接字符串
2.自定义变量调节器:

变量调节器存放目录下新建文件:modifier.调节器名称.php
在该文件里面新建一个方法:function smarty_modifier_调节器名($str){}
$str参数代表调用该调节器的变量
最后该方法要有一个返回值

函数:

关键字:function普通函数,block块函数

1.系统自带的函数:if  foreach

<{if 条件}>
满足条件输出内容
<{else}>
不满足条件输出内容
<{/if}>

<{if 条件1}>
满足条件输出内容
<{elseif 条件2}>
不满足条件1满足条件2执行
<{/if}>

比较的时候,有备用词可以使用

<{foreach $shuzu as $v}>

$v@index 从0开始的索引
$v@first 代表是第一个循环的
$v@last 代表是最后一个循环的

<{/foreach}>

2.自定义函数

找到存放函数插件的文件夹在里面新建文件:function.函数名.php (block.函数名.php)
在该文件里面新建一个方法:function smarty_function_函数名($args){}
function smarty_block_函数名($args,$nr,$smarty,$bs){}

参数$args:调用该函数传入的属性关联参数
参数$nr:block块之间所夹的内容
参数$smarty:对象
参数$bs:是否是第一次调用(开始标记里面调用)

该方法最终有返回值

模板继承:

extends  block

父模板:一般用来放网页的头和尾
需要预留一定的区域来让子页面修改替换
使用<{block name='neirong'}><{/block}>
一般来说,父模板里面至少预留两块区域,其中一块是在head里面 另一块是在body里面

子页面:一般继承父模板放该页面实现的功能
<{extends file=''}>
完善替换父模板中预留的区域:
<{block name='neirong'}><{block}>

缓存:

做法:
1.定义一个缓存文件存放的路径
2.判断缓存文件是否存在或者是否过期
3.如果文件不存在或过期:
    开启内存缓存ob_start();
    取内存中的内容ob_get_contents();
    将内容存放到缓存文件中file_put_contents();
    关闭内存缓存ob_flush();
4.如果文件存在或没有过期:
    将缓存文件引入当前页面include();

最新文章

  1. C++ const用法 尽可能使用const [转载]
  2. Linux常见命令汇总
  3. 实现textarea限制输入字数(包含中文只能输入10个,全ASCII码能够输入20个)
  4. windows下面go语言环境搭建
  5. Http Response Code
  6. PartialView
  7. [Mac]ios应用发布流程
  8. HDU 4614-Vases and Flowers(线段树区间更新)
  9. C# 实现MD5 Hash 计算
  10. Js把URL中的参数解析为一个对象
  11. 信号和槽有一个非常精炼的C++实现,作者是Sarah Thompson,该实现只有一个头文件sigslot.h,跨平台且线程安全
  12. 【iOS发展-70】点菜系统案例:使用文本框inputView和inputAccessoryView串联UIPickerView、UIDatePicker和UIToolBar
  13. ibatis 自动生成map,bean,dao
  14. Android 7.1 WindowManagerService 屏幕旋转流程分析 (二)
  15. 从壹开始前后端分离 [ vue + .netcore 补充教程 ] 三十║ Nuxt实战:动态路由+同构
  16. Snapde和常用的CSV文件编辑器对比
  17. URL存在跨站漏洞http host头攻击漏洞解决方案
  18. Dubbo+ZK与Eureka注册中心比较
  19. ansible中include_tasks和import_tasks
  20. JQuery官方学习资料(译):操作元素

热门文章

  1. js 对象引用传值
  2. Map的key不变,value相加
  3. 【RF库Collections库测试】关键字append to list
  4. 新唐ARM9之NUC972学习历程之系统的搭建和BSP包的使用
  5. PyQt4滑块QSlider、标签QLabel
  6. js 数组函数
  7. SRC常见WEB漏洞系列之HTTP-HOST头攻击
  8. CVE-2017-1000117命令注入验证
  9. String() 函数把对象的值转换为字符串。
  10. 【BZOJ1901】Zju2112 Dynamic Rankings 主席树+树状数组