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();

smarty汇总的更多相关文章

  1. Smarty模板重点汇总

    Smarty模板重点回顾:1.功能:前后端分离:2.实现方法:通过使用Smarty的核心类来实现,利用display方法来读取模板文 件,用正则进行替换,替换完保存到临时文件,再将临时文件加载到当前页 ...

  2. iOS、mac开源项目及库汇总

    原文地址:http://blog.csdn.net/qq_26359763/article/details/51076499    iOS每日一记------------之 中级完美大整理 iOS.m ...

  3. PHP面试题汇总参考

    PHP面试题汇总 这是一份比较全面的PHP面试题.对准备去新公司应聘PHP职位的开发者应该有帮助.或者说,对招聘PHP开发人员的企业也有些帮助,不过就不要原样打印出来考了,稍微改一改. 简述题(50分 ...

  4. PHP之道 - php各方面的知识汇总

    看到一个PHP的知识各方面的汇总,写的很有借鉴意义,搬过来了 转自: https://laravel-china.github.io/php-the-right-way/ 欢迎阅读 其他语言版本 参与 ...

  5. 最全面的iOS和Mac开源项目和第三方库汇总

    标签: UI 下拉刷新 EGOTableViewPullRefresh – 最早的下拉刷新控件. SVPullToRefresh – 下拉刷新控件. MJRefresh – 仅需一行代码就可以为UIT ...

  6. 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)

    前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...

  7. 异常处理汇总 ~ 修正果带着你的Net飞奔吧!

    经验库开源地址:https://github.com/dunitian/LoTDotNet 异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983 ...

  8. UWP开发必备:常用数据列表控件汇总比较

    今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...

  9. Smarty的基本使用与总结

    含义: Smarty是PHP的一个引擎模板,可以更好的进行逻辑与显示的分离,即我们常说的MVC,这个引擎的作用就是将C分离出来. 环境需求:PHP5.2或者更高版本 我使用的环境是:PHP5.3,wi ...

随机推荐

  1. 三. 动态添加option选项

  2. [翻译]opengl扩展教程1

    [翻译]opengl扩展教程1 原文地址https://www.opengl.org/sdk/docs/tutorials/ClockworkCoders/extensions.php [翻译]ope ...

  3. hdu1536&&hdu3023 SG函数模板及其运用

    S-Nim Time Limit: 1000MS   Memory Limit: 32768KB   64bit IO Format: %I64d & %I64u Submit Status ...

  4. COGS 2188. [HZOI 2015] Math 题解

      题目描述: 给定n个数X1-Xn,求下面式子的值(整数部分): n<=107,xi<=109且互不相同. 分析: 其实一开始看见这道题我也吓傻了,k这么大,再说我又是数论鶸渣,打死也不 ...

  5. backbone模型层浅析

    Model层有两个类: Model, Collection 1.Model 不翻文档,我们用代码说话. 首先分析下类. var myM = Backbone.Model.extend({})//构造一 ...

  6. Centos6一键搭建L2TP VPN服务器

    用VPS在墙上打洞还有一种叫L2TP,也是常见的一种方式.本脚本结合了L2TP(Layer Tunneling Protocol)和IPSec(Internet Protocol Security), ...

  7. Cannot load supported formats: Cannot run program "svn": CreateProcess error=2

    svn CreateProcess error=2, 系统找不到指定的文件 IntelliJ IDEA 13.1.2安装后,SVN checkout时候会出现如下错误: Cannot load sup ...

  8. 【Docker】docker /var/lib/docker/aufs/mnt 目录满了,全是垃圾数据,咋搞?

    命令: #!/bin/bash # 推荐方式 docker volume ls -f dangling=true | awk '{ print $2 }' | xargs docker volume ...

  9. 【自动部署】Ansible 怎么通过堡垒机/跳板机 访问目标机器

    Ansible机器的 /root/.ssh/config 配置如下即可:Host 目标机器IP User root IdentityFile=/root/.ssh/xxx_id_rsa ProxyCo ...

  10. centos 7 python2.7.5升级到3.5.2

    centos 7 python2.7.5升级到3.5.2 下载python3.5.2 wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2 ...