Smart

Smarty是一个PHP的模板引擎,提供让程序逻辑与页面显示(HTML/CSS)代码分离的功能。

smarty特点

  1. 速度:使用smarty可以获得最大速度的提高(相对于其它模板引擎技术)。
  2. 编译型:在下一次访问模板时直接访问编译文件,而不再进行模板重新编译。
  3. 缓存技术:可以将用户最终看到的HTML文件缓存成一个静态的HTML页。
  4. 插件技术:smarty可以自定义插件。插件实际就是一些自定义的函数。
  5. 强大的表现逻辑:模板中可以使用if/elseif/else/endif、foreach等。

Smarty基本语法

1.定界符(默认{})

  1. 任何在定界符之外的内容,都是静态的,是不会被解析的(包括php代码)
  2. { 和 $ 中间不能有任何空格,否则将不会解析。(右边则是可以的)
  3.  默认的定界符是可以修改的

问题:当在html页面引入css或js文件时,Smarty也会解析{}里面的内容;所以可以从以下方面解决:

(1)在{ $}在左{空一格;

(2)使用内置函数,将{}里面的内容包起来

<literal>

h3 {font-size:29px;}

</literal>

(3)更改定界符(修改smarty默认的属性值$smarty->left_delimiter="<{" ;$smarty->right_delimiter="}>" )

2.注释

格式:定界符* 内容*定界符 ;例如:{*你好*}

3.变量

php变量类型(422):
4个标量:整型、浮点型、字符串和布尔类型
2个复合型:数组和对象。
2个特殊类型:资源和NULL

(1)普通变量

Smarty声明普通变量的两种方法:
【1】在php文件中用$smarty->assign(名,值)这个方法声明,例如:$smarty->assign('name','Ling');
【2】在模板文件中声明,例如,在./templates/index.html目录下用{assign var='name' value='Ling'}

(2)保留变量($smarty)

用$smarty可以获取get、post、request、session、cookie、常量等值,例如:

【1】获得get提交的值:例如:{$smarty.get.name}       $_GET

【2】 获得post提交的值         {$smarty.post.变量名}    $_POST

【3】万能的获得值的方法      {$smarty.request.变量名}  $_REQUEST

【4】
$_SESSION['country']='China';

在模板中获取会话

{$smarty.session.country}

【5】获取cookie
setcookies('country','China');
{$smarty.cookie.country}
【6】显示常量

{$smarty.const.city}


(3)配置变量

配置变量一般在./configs/smarty.conf目录中声明,然后在模板文件中引用配置变量;
{config_load file="smarty.conf"}

在配置文件中有主配置文件,也有章节配置文件,默认引用主配置文件,如果想要引用章节配置文件,可以通过{config_load file="smarty.conf" section='style1'}来引用,例如:


4.数组

(1)smarty访问数组的两种方法:
[1]数组[下标]

[2]数组.下标
例如:{$smarty[0]}、{$smarty.0}

(2)遍历数组(foreach和section)
{foreach $数组变量名 as $k=>$v}

如果不存在遍历的数组则执行{foreachelse}部分

foreach内部关键字

语法

描述

值变量@iteration

从1开始的序号

值变量@index

从0开始的索引

值变量@first

判断是否是第一个元素

值变量@last

判断是否最后一个元素

值变量@total

数组的长度

值变量@show

数组是否为空

 

 



用section只能遍历索引数组,不能遍历关联数组,用法与foreach一样。


5.smarty布局

在smarty文件夹中新建一个layout文件,用来存放通用模板。例如,要建立这样的布局时

可以新建一个template1.html模板,如下:

这时当你想更换某部分时内容时,可以在templates文件夹下的某个html文件下通过{block name='main1'}来替换
例如,在templates/index.html下更改右边的内容时,可以通过以下方法来实现:
{extends file="layout/template1.html"}
{block name='right'}
离离原上草
{/block}

6.smarty缓存

为了提高网站的访问速度,如果每个用户访问一次,服务器就解析一次的话,速度会大打折扣,在smarty模板中的template_c下生成的文件并不是缓存文件,而是替换成php语法的文件,是含有<?php?>标记的,而缓存文件是纯粹的html文件,因此,我们必须开启smarty缓存文件。方法如下:

$smarty->caching=1;此时开启smarty缓存,调用display()的时候,如有有缓存就从缓存中读取,如果没有,就在cache目录下生成。

每当有模板文件修改时,就必须更新缓存文件。用$smarty->force_cache=true来强制更新。


还可以设置缓存文件的声明周期,用$smarty->cache_lifetime=?秒来设置














  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值