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. 3d回顾

    手把手教你玩转 CSS3 3D 技术   要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上 ...

  2. Linux文件读写机制及优化方式

    导读 Linux是一个可控性强的,安全高效的操作系统.本文只讨论Linux下文件的读写机制,不涉及不同读取方式如read,fread,cin等的对比,这些读取方式本质上都是调用系统api read,只 ...

  3. SSH如何通过公钥连接云服务器

    导读 通常我们连接远程服务器(linux)windows下通过putty或xshell等工具远程连接.linux下可以直接通过ssh命令连接.其实这两者都是一致的,都是通过ssh协议进行传输. 如果我 ...

  4. 极客DIY:制作一个可以面部、自主规划路径及语音识别的无人机

    引言 现在大部分无人机厂商都会为第三方开发者提供无人机API接口,让他们更容易地开发无人机飞行控制应用程序,让无人机想怎么玩就怎么玩.有的API接口可以帮助开发者开发基于Web版的APP.手机APP甚 ...

  5. php搜索分页

    最近做搜索分页的时候,发现第一页显示正常,点击到下一页的时候,显示结果变成了搜索全部内容. 仔细查看代码,发现当第一次输入关键词,提交到查询控制器的时候,表单提交的关键字不为空,可是点击到下一页的时候 ...

  6. Servlet的使用方法详细说明

    Servlet的生命周期方法: init() destroy() doGet(HttpServletRequest request,HttpServletResponse response) 客户端请 ...

  7. 5.3(2)----机器人走方格2(CC150)

    这道题只需要把障碍点都设为0就可以了. public static int countWays(int[][] map,int x, int y){ if( x < 0 || y < 0) ...

  8. 【GoLang】50 个 Go 开发者常犯的错误

    1. { 换行:   Opening Brace Can't Be Placed on a Separate Line 2. 定义未使用的变量:  Unused Variables 2. import ...

  9. jQuery Plugin Docs

    遮罩:BlockUI 对话框:Dialog 输入框:Mask Plugin 下拉框: 1.自定义的实现思路:将下拉框的选项定义为全局变量(数组),在html中定义点击事件并将数组变量转给响应函数,每次 ...

  10. Android studio教程

    Android studio教程: http://jingyan.baidu.com/season/44062