$smarty的保留变量与从配置文件中读取的变量

来源:互联网 发布:python time 编辑:程序博客网 时间:2024/06/05 11:52

从配置文件读取变量:

    配置文件中的变量需要通过用两个"#"或者是smarty的保留变量$smarty.config.来调用第二种语法在变量作为属性值并被引号括住的时候非常有用.
(译注:举个例子 {include file="#includefile#"} 这样#includefile#将被当作字符处理,而不表示配置文件变量,
    但可以这样表示 {includefile="’$smarty.config.includefile’"}不要忘了加’’)

foo.conf:
 
pageTitle = "This is mine"
bodyBgColor = "#eeeeee"
tableBorderSize = "3"
tableBgColor = "#bbbbbb"
rowBgColor = "#cccccc"
 
index.tpl:
 
{config_load file="foo.conf"}
<html>
<title>{#pageTitle#}</title>
<body bgcolor="{#bodyBgColor#}">
<table border="{#tableBorderSize#}" bgcolor="{#tableBgColor#}">
<tr bgcolor="{#rowBgColor#}">
        <td>First</td>
        <td>Last</td>
        <td>Address</td>
</tr>
</table>
</body>
</html>
 
index.tpl: (alternate syntax)
 
{config_load file="foo.conf"}
<html>
<title>{$smarty.config.pageTitle}</title>
<body bgcolor="{$smarty.config.bodyBgColor}">
<table border="{$smarty.config.tableBorderSize}" bgcolor="{$smarty.config.tableBgColor}">
<tr bgcolor="{$smarty.config.rowBgColor}">
        <td>First</td>
        <td>Last</td>
        <td>Address</td>
</tr>
</table>
</body>
</html>
 
 
这个例子与上面两个例子同样地效果
OUTPUT: (same for both examples)
 
<html>
<title>This is mine</title>
<body bgcolor="#eeeeee">
<table border="3" bgcolor="#bbbbbb">
<tr bgcolor="#cccccc">
        <td>First</td>
        <td>Last</td>
        <td>Address</td>
</tr>
</table>
</body>
</html>

 

 

 

 

1、找到smarty_class.php

       找到:var  $config_dir   = “configs”;

2、保存到配置文件中(init.inc.php):$this->config_dir = ‘configs’;

 

3、到根目录下创建configs 文件  , 在该文件夹内创建一个foo.conf文件

 

4、打开foo.conf文件开始配置全局变量,该文件中#号表示注释行;

       另外该文件的主要作用是让用户自定义修改你的网站的外观,比如颜色和一些布局。

 

       在配置文件中,如果有换行的字符串,一定要用三个引号引起。 例如:

              Intro = “”” aaaaaaaa

                                   Bbbbbb

                                          Cccccccc”””;

5、打开*.html(tpl) 模板文件

              加载配置文件—1)、使用smarty的内建函数config_load

 

如果需要将内容放到不同的模板文件中,这是就需要定义节(局部变量)[节名称]

                     在foo.conf中被[]包含的是局部变量

节:属于局部变量,它存在的意义就是:选择不同的模板类型:例如:

                      Configs.Php文件:

[one]

a=11111111111111111111

[two]

b=2222222222222222222

[three]

c=3333333333333333333333

                      a.php

                            在模板里加载配置文件:

                            加载配置文件

<!--{ config_load file="foo.conf" section="one"}-->

       *此时显示的结果应该就是111111111111111

这里section对应的选项就是配置文件中的局部变量[one][two] [three]

Section等于那个局部变量就会相对应的显示那个变量下的内容。

 

 

6、{$smarty}保留变量

{$smarty}保留变量可以被用于访问一些特殊的模板变量.

例如:

<{ $smarty.const.__FILE__}>

<!--{ $smarty.config.border}-->

9、smarty的保留变量

{$smarty.now}

{$smarty.const}

{$smarty.capture}

{$smarty.config}

{$smarty.section},{$smarty.foreach}

{$smarty.template}

 

 php超级全局变量列表

  $_GET[] 获得以GET方法提交的变量数组

  $_POST[] 获得以POST方法提交的变量数组

  $_COOKIE[] 获取和设置当前网站的Cookie标识

$_SESSION[] 取得当前用户访问的唯一标识,以数组形式体现,如sessionid以及自定义session数据

  $_ENV[] 当前php环境变量数组

  $_SERVER[] 当前php服务器变量数组

  $_FILES[] 上传文件时提交到当前脚本的参数值,以数组形式体现  不用

$_REQUEST[] 包含当前脚本提交的全部请求,$_GET、$_POST、$_COOKIE、$_SESSION的所有动作   

$_GLOBALS();

<!--{ $smarty.get.page }--><br>  <!--用保留变量获取-->

     

 

 

$_GET();

              url: http://www.aaa.com?page=1

              *.php(moban.php)  :   $tpl->assign(“page”,$_GET());

 

              *.php(tpl)(yemian.tpl)   <{ $page }>

结果:1

 

 

第二种:使用保留变量获取

$smarty.超全局变量数组名(get,post,request等).元素的下标名

<{$smarty.get.page}>

结果:1

 

 

<!--{ $smarty.get.page}--><br>  <!--用保留变量获取-->

 

7、时间的显示:{$smarty.now}

<!--|管道符号-->

<!--{$smarty.now|date_format:"%Y-%m-%d%H:%M:%S"}-->

 

 

8、php中的预定义常量 p161

 

  __FILE__ 当前PHP程序脚本的绝对路径及文件名称

  __LINE__ 存储该常量所在的行号

  __FUNCTION__ 存储该常量所在的函数名称

  __CLASS__ 存储该常量所在的类的名称

  __METHOD__存储该常量所在的类的方法的名称

  PHP_VERSION 存储当前PHP的版本号,也可以通过PHPVERSION()函数获取。

PHP_OS 存储当前服务器的操作系统

TRUE

FALSE

NULL

DIRECTORY_SEPARATOR

PATH_SEPARATOR

E_ERROR

E_WARNING

E_PASER

E_NOTICE

M_PI

 

 

第三部分:变量调节器:

      

       smarty 变量调节器用于变量,自定义函数和字符串。请使用 ‘ | ’符号和调节器名称应用调节器。 变量调节器由赋予的参数值决定其行为。参数由‘ :’符号分开。

例题:

*.php

       $tpl->assign("capit","capil aliz e");

      

       $tpl->assign('articleTitle','Dealers Will Hear C

       arTal <font color=red>

       kat Noon. </font>HELLO');

      

       //字符串格式化

       $tpl->assign('number',23.5787446);

 

*.tpl

<p>变量调节器</p>

1、首字母大写

<!--{$capit|capitalize}--><br>

 

2、统计字符个数

<!--{$capit|count_characters}--><br>

 

3、统计字符个数

<!--{$capit|count_characters:true}--><br>

 

4、默认值,如果在模板中分配了变量,他的默认值就不会管用

<!--{$articleTitle|default:"notitle"}--><br>

 

默认值,不用在模板中分配变量,使用他的默认值

<!--{$myTitle|default:"notitle"}--><br>

 

5、连接字符串

<!--{$articleTitle|cat:"yesterday."}--><br>

 

6、计算段落

<!--{$articleTitle|count_paragraphs}--><br>

 

7、计算句数

<!--{$articleTitle|count_sentences}--><br>

 

8、计算词数

<!--{$articleTitle|count_words}--><br>

 

9、字符串缩进

<!--{$articleTitle|indent:10:"hello"}--><br>

 

10、将变量字符串小写

<!--{$articleTitle|lower}--><br>

 

11、所有的换行符将被替换成 <br />.功能同PHP中的nl2br()函数一样.

<!--{$articleTitle|nl2br}--><br>

 

12、正则替换

<!--{$articleTitle|regex_replace:"/[\r\t\n]/":"小样"}--><br>

 

13、字符替换

<!--{$articleTitle|replace:"Will":"*******"}--><br>

 

14、插空(不知道这个词是什么意思,顾名思义了^^)是一种在字符串的每个字符之间插入空格或者其他的字符(串).

<!--{$articleTitle|spacify:"^^"}--><br>

 

15、字符串格式化

<!--{$number}--><br>

<!--{$number|string_format:"%.2f"}--><br>

<!--{$number|string_format:"%d"}--><br>

 

16、所有的换行符将被替换成 <br />.功能同PHP中的nl2br()函数一样.

<!--{$articleTitle|nl2br}--><br>

 

17、用一个空格或一个给定字符替换所有重复空格,换行和制表符.

<!--{$articleTitle|strip:"&nbsp;"}--><br>

 

18、去除html标签

<!--{$articleTitle|strip_tags}--><br>

 

19、从字符串开始处截取某长度的字符.默认是80个.

你也可以指定第二个参数作为追加在截取字符串后面的文本字串.该追加字串被计算在截取长度中。

默认情况下,smarty会截取到一个词的末尾。

如果你想要精确的截取多少个字符,把第三个参数改为"true"

<!--{$articleTitle}--><br>

<!--{$articleTitle|truncate}--><br>

<!--{$articleTitle|truncate:30}--><br>

<!--{$articleTitle|truncate:30:""}--><br>

<!--{$articleTitle|truncate:30:"---"}--><br>

<!--{$articleTitle|truncate:30:"":true}--><br>

<!--{$articleTitle|truncate:30:"...":true}--><br>

 

20、所有字符大写

<!--{$articleTitle|upper}--><br>

 

21、可以指定段落的宽度(也就是多少个字符一行,超过这个字符数换行).默认80.

第二个参数可选,可以指定在约束点使用什么字符(默认是换行符\n).

默认情况下smarty将截取到词尾,如果想精确到设定长度的字符,请将第三个参数设为ture

<!--{$articleTitle}--><br>

 

<!--{$articleTitle|wordwrap:30}--><br>

 

<!--{$articleTitle|wordwrap:10}--><br>

 

<!--{$articleTitle|wordwrap:10:"<br>\n"}--><br>

 

<!--{$articleTitle|wordwrap:10:"\n":true}--><br>

 

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

<!--{$articleTitle}--><br>

<!--{$articleTitle|escape}--><br>

<!--{$articleTitle|escape:"html"}--><br>  <!--{* escapes & " ' < >*}-->

<!--{$articleTitle|escape:"htmlall"}--><br>  <!--{* escapes ALL html entities *}-->

<!--{$articleTitle|escape:"url"}--><br>

<!--{$articleTitle|escape:"quotes"}--><br>