基本语法(注释、函数和属性)

18 篇文章 0 订阅
8 篇文章 0 订阅

基本语法(注释、函数和属性)

1、注释:包含在两个*中间,其格式如:<{**}>。

   Smarty注释不会在模板文件的最后输出中出现,它只是模版内在的注释。

2、函数:每个smarty标签都能输出一个变量或调用某一个函数。在定界符内的函数和属性将被处理和输出。
   <{funcname  attr1=”val” attr2=”val” }>

   在模板文件中无论是内建函数还是自定义函数,都有相同的语法。
   内建函数在smarty内部工作,例如<{if}>,<{section}>,<{foreach}>等,它们只可以被使用,不能被修改。

   自定义函数通过插件机制起作用。他们是附加函数,读者可以自行编辑、修改和添加,例如,<{assign}>,<{counter}>.

3、属性:大多数函数都有自己的属性,以便明确说明或者修改他们的行为。Smarty函数的属性类似html中的属性。
   在定义属性值时,如果是静态数值则不需要加引号,如果是字符串则建议使用引号,如果属性值是变量,那么也不需要加引号。

 

变量

Smarty有几种不同类型的变量、变量的类型取决于它的前缀是什么符号(或者被什么符号包围)。

Smarty的变量可以直接被输出或作为函数属性和修饰符的参数,或者用于内部的条件表达式等。

如果要输出一个变量,只需用定界符将它括起来即可。

<{$title}>
<{$array[row].id}>

<body bgcolor=”<{#bgcolor#}>”>

1、  来自php页面中的变量

2、  从配置文件中读取变量
在smarty模版中,在配置文件中也可以定义变量。调用配置文件中的变量的格式有以下2种。
1)使用“#”号将变量名置于“#”号中间,即可像普通变量一样调用配置文件内容。

2)使用保留变量中的$smarty_config来调用配置文件

3、保留变量
   在smarty模版中使用保留变量时无须使用assign方法传递通值,直接调用变量名即可。
   get post server session cookie  request
   now---当前时间戳,等价于php中的time()

   Const用const包含修饰的为常量
   config 配置文件内容变量

 

 

变量调节器

变量调节器作用于变量、自定义函数和字符串。使用“|”符号和调节器名称调用调节器。变量调节器由赋予的参数值决定其行为。参数由符号“:”分开。
smarty 中提供的变量调节器:
capitalize – 将变量中的所有单词首字母大写

Count_characters – 计算变量中的字符数。参数值为true,表示计算空格字符,默认为false

Cat – 将cat中的值连接到给定的变量后面

Count_paragraphs – 计算变量中的段落数量

Count_sentences – 计算变量中句子的数量

Count_words – 计算变量中的词数

Date_format -- 格式化从函数strftime()中获得的时间和日期。Unix或者mysql等的时间戳都可以传递到smarty。设计者可以使用date_format完全控制日期格式。

Default -- 为空变量设置一个默认值。

Escape – 用于html转码和url转码,在没有转码的变量上转换单引号、十六进制转码,或者javascript转码。默认是html转码。

Indent – 在每行缩进字符串,默认是4个字符。

Lower – 将变量字符串小写

Nl2br -- 所有的换行符将被替换成<br />,功能同php中的nl2br()函数。

Regex_replace  -- 寻找和替换正则表达式。

Replace – 搜索和替换字符串。

Spacify – 插空,在字符串的每个字符之间插入空格或者其他字符串。

String_format – 字符串格式化。才用sprintf()函数的语法

Strip --  用一个空格或给定的字符替换所有的重复空格、换行、制表符。

Strip_tags – 去除”<”,”>”标签,包括之间的内容

Truncate -- 从字符串开始处截取指定长度的字符,默认是80个字节。

Upper – 将变量改为大写

Wordwrap --  控制段落的宽度,也就是多少个字符一行,超过这个字符数后换行。默认是80字节。

 

{$title|lower|truncate:10:”…”}

 

 

内建函数(动态文件、模版文件的包含和流程控制语句)

1、config_load函数:加载配置文件
   从配置文件中加载变量的语法如下:
   {config_load file=”file_name” section=”add_attribute”scope=”” global=””}
2、foreach循环控制
   <{foreach name=foreach_name key=keyitem=item from=arr_name}>

   …..

  <{/foreach}>
   name:为该循环的名称
   key:为当前元素的键值
   item:为当前元素的变量名
   from:为该循环的数组。其中,item和from是必须的。
  $array =array('java','php','jsp','struts2');

$smarty->assign('content',$array);

 

  <{foreachkey=k item=item from=$content}>

<{$item}>----

<{/foreach}>

 

3、  include函数: 在模版中包含子模版。
include函数用于在当前模版中包含其他模版,当前模版中的变量在被包含的模版中可用。
<{include file=”fileName”  assign=””  var=”” }>

4、  include_php函数----在模版中包含php脚本
include_php函数用于在模版中包含php脚本。如果设置了安全模式,则被包含的脚本必须位于$trusted_dir路径下。
<{include_php file=”fileName”  once=””assgin=”” }>

5、  if…elseif…else条件语句
if必须以/if为结束标记。

6、  ldelim和rdelim ---- 输出大括号”{“ ,”}”

7、  section循环控制
{section name=”sec_name” loop=$arr_name start=num  step=num  max=  show=  }
name:该循环的名称
loop:为循环的数组
start:表示循环的初始位置
step:表示步长
max:用于设定循环的最大执行次数
show:决定是否显示该循环。

Section循环语句擅长的是操作ADODB从数据库中读取的数据,因为ADODB返回的数据就是一个二维数组。

 

Selction用于遍历数组中的数据。Section标签必须成对出现。用户必须设置name和loop属性。名称可以是包含字母、数字、下划线的任意组合。
它可以嵌套使用,但必须保证嵌套的name唯一。变量loop(通常是数组)决定循环执行的次数。当需要在section循环内输出变量时,必须在变量后加上中括号包含着的name变量。

输出section循环内的变量的格式是{$arr_name[sec_name].字段名称}.

 

 

 

 

自定义函数

Smarty中包含很多自定义函数,通过这些自定义函数可以实现很多功能。

Assign  ---- 用于在模版被执行时为模版变量赋值。参数var是被赋值的变量名;参数value是赋给变量的值。

Counter  ----  用户输出一个计数过程。Counter保存了每次记数时的当前记录值。

Cycle  ----  用于轮转使用一组值。该特性使得在表格中交替输出颜色或轮转使用数组中的值变得容易。参数name用于指定轮转的名称;参数value用于指定待轮转的值,可以使用逗号分割的列表或者一个包括多值的数组;参数print用于设置是否输出值;参数advance用于设置是否使用下一个值(为false时使用当前值);参数delimiter用于设置values属性中使用的分隔符,默认是逗号;参数assign用于指定输出值将被赋给模版变量的名称。

Debug  ----  将调试信息输出到页面上。该函数是否可用取决于smarty的debug设置

Eval   ----  按处理模版的方式获取变量的值。

Fetch  ----  用于从本地文件系统、http、ftp上取得文件并显示文件的内容。

Html_checkboxes ----  根据给定的数据创建复选按钮组。

Html_image  ----  创建一副图像的html标签。如果没有提供高度和宽度值,将根据图像的实际大小自动获得。

Html_option ----  根据给定的数据创建复选组

Html_radios ----  根据给定的数据创建单选按钮组

Html_select_date ----  创建日期下拉列表。它可以显示任意年、月、日

Html_select_time ---- 创建时间下拉列表。它可以显示任意时、分、秒

Html_table  ----  将数组中的数据填充到html表格中

Math  ----  允许模版设计者在模版中进行数学表达式运算

mailto  ----  自动生成电子邮件超链接,并根据选项决定是否对地址信息编码

popup  ----  用于创建javascript弹出窗口

textformart ----  用于格式化文本。该函数主要用于清理空格和特殊字符。

 

 

配置文件

1、  创建配置文件
对配置文件可以任意命名,其存储位置由Smarty对象的$config_dir属性指定。如果存在不只一个区域内使用的变量值,可以使用三引号(“”“)将它完整地封装起来。在创建配置文件时,建议在程序运行前使用#加一些注释信息,这样有助于程序的阅读、更新。
在配置文件中即可声明全局变量,也可以声明局部变量。如果声明局部变量,可以使用括号[ ] 括起来,在中括号之内声明的变量属于局部变量,而中括号之外声明的变量都是全局变量。中括号的使用不仅可以使配置文件中声明变量的模版变得清晰,而且可以在模版中选择加载中括号内的变量。
#global variables

Title=” 标题”
[table]
border=’1’
cellpadding=’2’

[td]
bgcolor=’#ffffff’

2、  加载配置文件
config_load加载配置文件或者
$smarty->config_load('test.conf');
<{#title#}>

3、  引用配置文件中的变量
配置文件加载成功后就可以在模版中引用配置文件中声明的变量了。引用配置文件中的变量应用“#”或者smarty的保留变量$smarty.config。

 

 

Smarty缓存
Smarty的编译功能默认是开启的,而Smarty缓存则必须由开发人员开启。
编译的过程是将模版转换为php脚本,虽然在模版没有被修改的情况下不会重新执行转换过程,但这个编译过的模版其实就是一个php脚本,只是减少了模版转换的压力,仍需要在逻辑层执行获取数据的操作,而这个获取数据的操作是非常耗费内存的。

缓存不仅将模版转换为php脚本,而且将模版内容转换为静态页面,这样不仅减少了模版转换压力,也不再需要在逻辑层执行获取数据的操作。

 

1、创建缓存
   $smarty->caching=true;
   $smarty->cache_dir=BASE_PATH.$SMARTY_PATH.”cache/”;
2、缓存的生命周期
   $cache_lifetime属性设置缓存生命周期,缓存时间为秒,默认值为3600秒。
   $smarty->cache_lifetime=3600
3、同一模版生成多个缓存
   $smarty->display(“index.html”,$_GET[‘id’]);

4、判断模版文件是否已经被缓存
   $smarty->caching=true;
   if(!$smarty->is_cached(‘index.html’)){
            //执行动态获取数据和输出的操作
   }
   $smarty->display(‘index.html’);

5、清除模版中的缓存
   clear_all_cache() 清除所有缓存
   clear_cache() 清除指定模版中的缓存

Eg:
$smarty->caching=true;
$smarty->clear_all_cache();
$smarty->clear_cache(‘index.html’);
$smarty->clear_cache(‘index.html’,$_GET[‘id’]);
$smarty->display(‘index.html’);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值