您的位置:首页 > 其它

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

2011-09-11 23:36 204 查看
基本语法(注释、函数和属性)

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=” 标题”

border=’1’

cellpadding=’2’



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’);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: