一、Smarty基础用法:
1、基础用法如下 include './smarty/Smarty.class.php';//引入smarty类
$smarty = new Smarty();//实例化smarty
$smarty->template_dir = './dir';//设置默认模板路径(当前如果有模版,优先找当前目录,没有再找定义的目录) $smarty->left_delimiter = '<{'; //设置边界符
$smarty->right_delimiter = '}>';//设置边界符
$smarty->caching = true;//开启缓存
$smarty->cache_lifetime = 120; //缓存生命周期(秒) $t = '北京真TM好'; //注:assign 可以传递所有数据类型(资源除外)
//然后在模板中单一型变量可以直接{$t}
//数组{$t['name']}或{$t.name}
//对象{$t->name}或其方法{$t->test()}
$smarty->assign('t',$t);//传参到模板 $smarty->display('2.html');//渲染(展示模板) 2、smarty中的系统变量
其中一些如下:
$smarty.now ,被解析成 time();
$smarty.get.key ---> $_GET[key]
$smarty.const.常量---> echo 常量名 3、从配置文件得到的变量
例:x x x .conf
配置项1=值1
配置项2=值2
配置文件的载入
{Config_load file="x x x .conf"}
引用配置选项的值
建议用后者,即中括号语法,兼容性更强
{$smarty.config.配置项}或者{#配置项#} xxx.conf //不用管后缀,就当是配置文件
aa=123
bb=456
<body>
<{Config_load file="xxx.conf"}>
<h1><{$smarty.config.aaa}></h1>
</body> 总结: 模板中的变量有 模板中的变量有 3种来源 种来源
1: assign赋值得到的变量 , 存储在_tpl_vars属性中
2: $smarty系统变量, 对于cookie,session,get,post,$_SERVER等信息,存储在_smarty属性中
   Smarty会自动捕捉,并保存起来,形成系统变量,可以直接用标签来引用.
3: 从配置文件读取的变量 , 存储在_config属性中;
   定界符冲突的问题 定界符冲突的问题
   如果smarty用定界符,比如 {,},
   此定界在js,css里都有很可能碰到,如果碰到,会当成smarty标签来解析,进而引发错误发生.
1: 换定界符,如 {> <}
2: 用literal标签,"原义","字符意义的","无夸张的"
   例: {literal}h1{background:gray}{/literal} ---> 一般不用 二、判断、循环、运算    判断 判断
{if $ss === xxx}
xxxx
{else if $xx ===xx}
xxxxx
{else}
xxxx
{/if} 循环 循环
//4.html
{foreach $new as $k=>$v}
{$v.title}
{$v.id}
{/foreach} 模板中的运算符 模板中的运算符
//4.html
{foreach $new as $k=>$v}
{$v.title}
{$v.id *4}
{/foreach} 变量调节器 变量调节器
date_format [格式化日期]
default [默认值]
escape [编码]
indent [缩进]
low er [小写]
nl2br [换行符替换成 <\br />]
replace [替换]
strip [去除(多余空格)]
strip_tags [去除html标签]
upper [大写] display 和fetch的区别 的区别
display 调用的ftech方法
即: display() = echo fetch(); 包含子模板 包含子模板
头部尾部的文件引用等,很实用;
{include file='./xxx.html' } 缓存 缓存
开启缓存
//6.php
$sm->caching = true;//开启缓存
$sm->cache_lifetime = 120; //缓存生命周期(秒) $smarty->isCached() 判断是否有缓存,如果有缓存,则用缓存,避免数据交互操作 默认情况下:smarty会自动生成一个文件夹templates_c来存放被替换的模板文件
如果开启了缓存,smarty会生成一个cache文件夹来存放被缓存的文件 单模板多缓存 单模板多缓存
1个模板还可以根据其他参数,缓存多个结果,比如商品页面根据商品id来为每个商品缓存一个页面 如下,$id就代表不同的商品id,然后每个id会生成一个缓存文件
if(!$sm->isCached('7.html',$id)){
$sm->assign('a',$id);
}
$sm->display('7.html',$id); 局部缓存 局部缓存
不缓存标签
可以以不缓存的方式assign()变量。
适用于单个标签不缓存。
例:
$foo = 'ttttt';
$smarty->assign('foo',$foo,true); //第三个参数 true 不缓存
那么在模板中 
这个<a>{$foo}</a> 
会变成<a><?php echo $foo?></a>
而不是<a>ttttt</a> nocache  标签 
在模板中,不需要缓存的地方,用 {nocached}{/nocached} 包住.
适用于大段的不缓存效果
html模板
例: {nocache}{$smarty.now }{/nocache} 模板调用 模板调用 PHP函数 函数
模板中用{insert name=xx } 直接调用PHP中的insert_xx函数

Smarty基础用法的更多相关文章

  1. PropertyGrid控件由浅入深(二):基础用法

    目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...

  2. logstash安装与基础用法

    若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...

  3. elasticsearch安装与基础用法

    来自官网,版本为2.3 注意elasticsearch依赖jdk,2.3依赖jdk7 下载rpm包并安装 wget -c https://download.elastic.co/elasticsear ...

  4. BigDecimal最基础用法

    BigDecimal最基础用法 用字符串生成的BigDecimal是不会丢精度的. 简单除法. public class DemoBigDecimal { public static void mai ...

  5. Vue组件基础用法

    前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...

  6. 前端自动化测试神器-Katalon的基础用法

    前言 最近由于在工作中需要通过Web端的功能进行一次大批量的操作,数据量大概在5000左右,如果手动处理, 完成一条数据的操作用时在20秒左右的话,大概需要4-5个人/天的工作量(假设一天8小时的工作 ...

  7. Bootstrap fileinput:文件上传插件的基础用法

    官网地址:http://plugins.krajee.com/ 官网提供的样例:http://plugins.krajee.com/file-input/demo 基础用法一 导入核心CSS及JS文件 ...

  8. asyncio 基础用法

    asyncio 基础用法 python也是在python 3.4中引入了协程的概念.也通过这次整理更加深刻理解这个模块的使用 asyncio 是干什么的? asyncio是Python 3.4版本引入 ...

  9. oracle入坑日记<六>自增列创建和清除(含序列和触发器的基础用法)

    0   前言 用过 SQLserver 和 MySQL 的自增列(auto_increment),然而 Oracle 在建表设置列时却没有自增列. 查阅资料后发现 Oracle 的自增列需要手动编写. ...

随机推荐

  1. [ACdream]女神教你字符串——违和感

    题目描述: 女神最喜欢字符串了,字符串神马的最有爱了. 女神是一个重度强迫症患者,面对不是对称的东西,她会觉得太违和了,就会爆炸.所以她手上的字符串都是回文的,像什么a,b,aabaa,abcba,上 ...

  2. R学习笔记 第二篇:矩阵、数组和列表

    向量是一维的,只有长度(行),没有其他维度.R中存在更高维度的对象,他们是矩阵,数据框,数组.这些对象的下标都是使用中括号[],第一个维度是row,第二个维度是column,依次类推,[row,col ...

  3. Supervised Learning and Unsupervised Learning

    Supervised Learning In supervised learning, we are given a data set and already know what our correc ...

  4. 最近折腾老机器:还是 Xp 最好!

    闲来无事,折腾机器. -------------------------------------------------------------- 硬件: CPU:amd x2450 Memory:6 ...

  5. WuKong

    WuKong Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  6. Can you solve this equation?

    Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav ...

  7. SQL表连接查询(inner join(join)、full join、left join、right join、cross join)

    下面列出了您可以使用的 JOIN 类型,以及它们之间的差异. JOIN: 如果表中有至少一个匹配,则返回行(join=inner join) LEFT JOIN: 即使右表中没有匹配,也从左表返回所有 ...

  8. SQL查询多条不重复记录值简要解析【转载】

    转载http://hi.baidu.com/my_favourate/item/3716b0cbe125f312505058eb SQL查询多条不重复记录值简要解析2008-02-28 11:36 以 ...

  9. C#三大方法:虚方法、静态方法、实例方法

    虚方法:使用virtual关键字定义,当子类继承父类时,可以对父类中的虚方法进行重写. 如下面代码中的类B,它继承类A,类A实现了接口I(实现了接口中的foo()方法).在类A中使用virtual将f ...

  10. WebP 的前世今生

    除了视频,图片占据了 PC 和 App 的大部分流量,为运营方带来高额的成本支出,同时过多的图片加载会影响到网站与 App 的加载速度.因此在保证图片质量的前提下缩小图片的体积就成了迫在眉睫的事情. ...