smarty配置以及变量调节器详解

简介:

   最近没事儿做,就研究研究smarty模版引擎,越来越觉得smarty的强大了,smarty的教程在网上好像都比较乱。

   1.下载smarty,http://www.smarty.net/download

   2.把下载下来的smarty改名为smarty然后复制到新建好的文件夹里

   3.新建一个smarty.inc.php(也可以是别的)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
require_once  'smarty/Smarty.class.php' ;
$smarty = new  Smarty();
$smarty ->template_dir= 'templates/' ;
$smarty ->compile_dir= 'templates_c/' ;
$smarty ->cache_dir= 'temp/' ;
$smarty ->config_dir= 'configs/' ;
$smarty ->caching=0;           //缓存
$smarty ->cache_lifetime=60;
if  (!defined( 'SITE_URL' )){
     $url = $_SERVER [ 'REQUEST_SCHEME' ]. '://' . $_SERVER [ 'HTTP_HOST' ];
     define( 'SITE_URL' $url );
}
if  (!defined( '__ROOT__' )){
     define( '__ROOT__' , rtrim(dirname( __FILE__ ), '\\' ). '\\' );
}
//去除反斜杠
if  (get_magic_quotes_gpc()){
     function  stripcslashes_arr( $array ){
         is_array ( $array )? array_map ( 'srtipcslashes_arr' $array ): stripcslashes ( $array );
     }
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
     $_POST =stripcslashes_arr( $_POST );
     $_GET =stripcslashes_arr( $_GET );
     $_REQUEST =stripcslashes_arr( $_REQUEST );
     $_COOKIE =stripcslashes_arr( $_COOKIE );
     $_SESSION =stripcslashes_arr( $_SESSION );
}
//时区设置
date_default_timezone_set( 'PRC' );
//加载function
if  ( file_exists ( 'common/common.php' )){
     require_once  'common/common.php' ;
}


    并且手动建立相应的目录,调试的时候建议把缓存关了。

    然后新建一个index.php,

1
2
3
4
5
6
7
8
9
10
11
12
<?php
require_once  'smarty.inc.php' ;
$title= '第一个标题' ;
$smarty->assign( 'title' ,$title);
$people=array(
         array( 'name' => '张三' , 'sex' => '男' , 'age' => '20' ),
         array( 'name' => '李四' , 'sex' => '男' , 'age' => '40' ),
         array( 'name' => '王五' , 'sex' => '女' , 'age' => '32' ),
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
);
$smarty->assign( 'people' ,$people);
$smarty->display( 'index.tpl' );


    在templates这个文件夹里新建一个index.tpl,调用方式为{$title},然后访问index.php是不是ok了?

    数组的访问方式,比如$people这个二维数组,就是{$people.0.name}输出的就是张三

    对象的访问方式,{$对象名->属性(方法)}


   接下来就是变量调节器,其实日常用到的并不多,所以我就练习了几个常用的

   1.capitalize首字母大写{$title|captalize}

   2.count_characters统计字符数    {$title|count_characters},新版的smarty统计中文也没问题,统计的时候会过滤掉空格(默认),{$title|count_character:true},就不会过滤空格了

   3.cat连接字符串{$title|cat:"..."}    output:第一个标题...

   4.date_format        格式化时间{$smarty.now|date_format:"%T-%m-%d %H:%M:%S"}    输出目前格式化的时间,第二个参数为格式化失败以后默认显示{$smarty.now|date_format:"%T-%m-%d %H:%M:%S":"0000-00-00"}

   5.default    变量为空的时候要输出什么,或者变量没有定义,都可以指定默认输出{$title|dafault:"暂时没有数据"}

   6.escape        编码,最常用的就是url,html编码了,把html代码转换为实体保存到数据库等作用,默认为html编码

   7.indent        缩进,发布文章的时候会需要这个。第一个参数指定要缩进的字符数,第二个参数指定要用什么字符代替{$title|indent:4:"..."}        output:............第一个标题

   8.lower        所有字符转换为小写

   9.nl2br        等同php的nl2br函数

   10.regex_replace    正则替换,第一个为正则表达式,第二个为要替换成的文本

   11.replace        简单替换,用法等同regex_replace

   12.strip            去掉多余的空格

   13.strip_tags        去掉html标签,

   14.truncate        截取字符数,{$title|truncate:10}截取10个字符,{$title|truncate:10:"..."}截取以后在后面显示...{$title|truncate:10:"..."|true}截取到词的边界(false)的时候,为true的时候是截取到字符边界

   15.upper    转换为大写

   16.wordwrap    行宽约束{$title|wordwrap:10}到了第10个字符就自动换行{$title|wordwrap:10:"<br />"}用什么字符约束,如果没有这个,他是不换行的。第三个如果为true,{$title|wordwrap:10:"<br />",true}约束到到词的边界(false)的时候,为true的时候是约束到字符边界

   这些变量调节器也可以根据需要去组合在一起的。










本文转自 3147972 51CTO博客,原文链接:http://blog.51cto.com/a3147972/1254727,如需转载请自行联系原作者
目录
相关文章
|
编译器 C#
C#之十七 局部类型
C#之十七 局部类型
35 0
|
10天前
|
C语言
【C语言】全局搜索变量却找不到定义?原来是因为宏!
使用条件编译和 `extern` 来管理全局变量的定义和声明是一种有效的技术,但应谨慎使用。在可能的情况下,应该优先考虑使用局部变量、函数参数和返回值、静态变量或者更高级的封装技术(如结构体和类)来减少全局变量的使用。
26 5
|
3月前
|
API 数据安全/隐私保护 索引
【收藏】用MASM32枚举全局钩子
【收藏】用MASM32枚举全局钩子
|
前端开发
🎖️如何在 Tailwind 中设置打印样式?
对于典型的以文档为导向的网站,特别是那些包含大量文本和图像内容的网站,可能会关心其在打印预览中的呈现。
172 0
🎖️如何在 Tailwind 中设置打印样式?
|
JSON C语言 数据格式
【C/C++】防止不必要的局部宏替换
如何避免和防止宏定义在不必要的位置进行替换
234 0
|
JavaScript 前端开发
js传递参数时变量名动态拼接(含数字或指定规律的变量名称)
js传递参数时变量名动态拼接(含数字或指定规律的变量名称)
494 0
|
存储 编译器 内存技术
Keil MDK下如何设置非零初始化变量(复位后变量值不丢失)
Keil MDK下如何设置非零初始化变量(复位后变量值不丢失)
425 0
西门子S7-1200PLC变量表如何使用?如何声明、选用、显示、定义、更改变量?变量保持性如何设置?
在S7-1200 CPU的编程理念中,特别强调符号寻址的使用,在开始编写程序之前,用户应当为输入、输出、中间变量定义相应的符号名,也就是标签。具体步骤如下:
西门子S7-1200PLC变量表如何使用?如何声明、选用、显示、定义、更改变量?变量保持性如何设置?
|
JavaScript
JS中的for in循环中的变量指的是什么?
JS中的for in循环中的变量指的是什么?
190 0
JS中的for in循环中的变量指的是什么?
|
Python
PyQt5 技巧篇-增加一个类级变量,类级变量的设置方法,类级“常量“设置方法
PyQt5 技巧篇-增加一个类级变量,类级变量的设置方法,类级“常量“设置方法
334 0