Smarty模板语法详解

Smarty模板语法详解

本文主要介绍了Smarty模板的语法,分析了Smarty模板的基本语法和使用技巧,如注释、变量、引号、函数等。有例子。有需要的可以参考一下。

本文阐释了Smarty模板语法。分享给你,供你参考,如下:

所有模板标签都用分隔符括起来,默认情况下是“{”和“}”。

模板注释

注释用星号括起来,两边的星号用分隔符“{}”括起来,比如{smarty *}。

Smarty注释不会出现在模板文件的最终输出中,与(翻译注意:html注释在页面源代码中可见,smarty注释不可见)不同。

下面这个简单的代码片段{smarty}在源代码中是不可见的,但是源代码是可见的。

超文本标记语言

tltlesmarty/tltle

身体

{*smarty*}

自作聪明的人

!自作聪明

/body

/头

/html

变量初步

变量以美元符号开头,可以包含数字、字母和下划线,这与php非常相似。(注意:profile变量是一个不以美元符号开头的变量,可以包含数字、字母和下划线,这与php非常相似。(注意:配置文件变量是用#符号而不是美元符号(#hashmarks#)括起来的变量,或者是$ smarty.config形式的变量。)

这里不解释Config。以下是变量的示例:

{$a $b} //处理变量的最简单方法

{$a={$b} 1} //标记嵌套标记

{$array[$a]} //变量做数组索引

{$assign var=fun value=$a $b} //变量赋值

{$fun={a}} //引号应用标签

{$assign var=fun value=[1,2,3]}

{$assign var=fun value=[1,2,[3,4]]}

{$ assign var=funvalue=[1= one ,2= tow ]}//数组定义

{ $ fun=stlen $ a)}

{fun=function($a,$b)} //用作函数参数。

{$array.a=1}

{ $ array . a . b . c($ array[a][b][c])=1 }//数组索引赋值

{ $ object-method 1($ x)-method 2($ y)}//对象链

双引号中插入变量

1.Smarty可以识别嵌入在双引号中的变量,只要这个变量只包含数字、字母、下划线和括号[]。

2.对于句点、数组符号和对象引用等。此变量必须使用两个反引号`。

3.Smarty3增加了双引号来支持Smarty标签。在需要包含调节器变量、插件和php函数返回值的情况下,它非常有用。

{ function var= test $ foo test }//Identify $ foo

{ func var= test $ foo _ bar test }//Identify $ foo _ bar

{ func var= test ` $ foo[0]` test }//Identify $ foo[0]

{ func var= test ` $ foo[bar]` test }//Identify $ foo[bar]

{func var=test $foo.bar test} //识别$foo(不识别$foo.bar)

{ func var= test ` $ foo . bar ` test }//Identify $ foo . bar。

{ func var= test ` $ foo . bar ` test | escape }//调节器在引号之外。

{ func var= test { $ foo | escape } test }//调节器在引号中。

{ func var= test { time()} test }//PHP函数识别

{ func var= test { counter } test }//标记标识

函数

每个smarty标签输出一个变量或调用一个函数。在分隔符内,函数(通常用分隔符 {} 括起来)及其属性(也在分隔符内)将被处理和输出。示例:{function(函数名)attr1(变量名)="val "(变量值)attr2="val"}。

{ config _ load file= colors . conf }

{include file=header.tpl}

{if $highlight_name}

欢迎光临,font color= { # font color # } { $ name }!/font

{else}

欢迎,{$name}!

{/if}

{include file=footer.tpl}

1.内置函数和自定义函数在模板中具有相同的语法。

2.内置函数会在smarty内部起作用,比如{if}、{section}和{strip},并且不能修改。

3.自定义函数通过插件机制工作。它们是附加功能。喜欢就随意修改,也可以自己加。例如{html_options}和{html_select_date}。

属性

大多数函数都有自己的属性,以便明确地解释或修改它们的行为。smarty函数的属性与HTML中的非常相似。静态值不需要引号,但是字符串建议用引号。你可以使用普通的smarty变量或者带调节器的变量作为属性值,它们不需要引号。甚至可以使用php函数返回值和复杂表达式作为属性值。

Math

数学可以直接影响变量值。

{$foo 1}

{$foo*$bar}

{ $ foo | truncate: ` $ fooTruncCount/$ barTruncFactor-1 ` }

{ assign var= foo value= ` $ foo $ bar ` }

忽略smarty语法

需要忽略Smarty对一些句子片段的解析。一个典型的例子是模板中嵌入的javascript或Css代码。原因是这些语言使用了与Smarty的默认分隔符“{”和“}”相同的符号。

方法:避免这种情况的一个好习惯是将你的javascript/css代码分离出来保存为一个独立的文件,然后用html方法链接到模板上。这也有助于浏览器缓存脚本。如果你想在javascript/css中嵌入Smarty变量和方法,请看下面的应用。

在Smarty template中,如果 { 和 } 花括号包含空格,整个{}内容将被忽略。您可以设置Smarty类变量$auto_literal=false来取消此规则。

脚本

//下面的大括号被Smarty忽略。Smarty将忽略下面的大括号。

//因为它们中间有空格,所以用空白圆整。

功能工具栏{

alert(foobar!);

}

//这个下面的内容会需要字面转义会保持原来的意思输出。

{literal}

函数bazzy {alert(foobar!);}

{/literal}

/脚本

{literal}…{/literal}块用于忽略模板语法的分析。您也可以使用{idelim}、{rdelim}标签或{smarty。Idelim}、{smarty。Idelim}、{smarty.rdelim}变量来忽略单个大括号(注意:后两种方法主要用于输出模板中的左右大括号。

对更多Smarty相关内容感兴趣的读者可以查看我们的专题:《smarty模板入门基础教程》、《PHP模板技术总结》、《PHP基于pdo操作数据库技巧总结》、《PHP运算与运算符用法总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》和《php+mysql数据库操作入门教程》。

我希望这篇文章能帮助你设计基于smarty模板的PHP程序。

Smarty模板语法详解