Smarty入门教程

heyaolong8

贡献于2012-07-04

字数:0 关键词: Smarty 模板引擎

smarty安装:什么是smarty?及其安装 疯狂代码 http://www.crazycoder.cn/ ĵ:http:/www.crazycoder.cn/Php/Article5555.html Smarty是个php模板引擎,它分开了逻辑和外在内容,提供了种易于管理思路方法. Smarty要求web服务器运行php4.0.6和以上版本. smarty安装需要smarty库文件可以去官方网站WebSitehttp://smarty.php.net下载 网上讲了很多安装教程但是我都没有成功所以直接把整个目录名改为smarty直接复制到了网站WebSite所在目 录下然后打开 http://网站WebSite路径/smarty/demo/index.php显示正常应该算是安装成功了 基本语法 所有smarty标签都被加上了定界符.在smarty里,所有定界符以外内容都是静态,当smarty遇到了模板标签,将尝试 解释他们,然后再以恰当方式输出. 默认情况下是 {和},但它们是可定制.定制思路方法是: $smarty->left_delimiter = ’’; 1.注释 模板注释被*号包围,例如 {* this is a comment *} smarty注释将不被输出.它是模板内在注释. 2.变量 模板变量以$开头可以包含数字字母和下划线 config_file变量是例外要用#变量名#思路方法引用 3. smarty标签输出个变量或者某种. 在定界符内和其属性将被处理和输出.例如: {funcname attr1=\"val\" attr2=\"val\"}. funcname为名称比如:等attr1attr2为属性名val为属性相应值 在模板里无论是内建还是自定义都有相同语法. 内建将在smarty内部工作,例如 {}, {section} 和{strip}.他们不能被修改. 自定义通过插件机制起作用,它们是附加,可以随意修改自行添加. 例如 {html_options} and {html_select_date} 4.属性 静态数值不需要加引号,布尔值(真或假)也不需要引号,可以是true,on,yes或者false,off,no. 但是串例外.变量同样 被用到了,它们也不能加引号. 5.在串中插入变量 只能识别数字字母下划线和组合如果为复杂形式需要用``将变量隔起来比如{func var=\"test $foo.bar test\"} 中只能识别变量$foo,要识别$foo.bar,需要写成{func var=\"test `$foo.bar` test\"}格式 6.些保留字显示思路方法 在模板中如果要将smarty些保留字作为语言内容显示出来比如显示分隔符默认为{}思路方法是: {ldelim},{rdelim} 或者{$ smarty.ldelim},{$smarty.rdelim} 或者可以把{}放在{literal} .. {/literal} 中间输出 smarty保留变量 {$smarty}保留变量可以被用于访问些特殊模板变量. 以下是全部. 页面请求变量 以下是访问页面请求变量诸如get,post,cookies,server,enviroment和session变量例子. 例如{$ smarty.server.SERVER_NAME}取得服务器变量{$smarty.env.PATH}取得系统环境变量path, {$ smarty.request.username}取得get/post/cookies/server/env复合变量 {$smarty.now}变量用于访问当前时间戳. 可以用 date_format调节器格式化输出. 例如{$smarty.now|date_format:\"%Y-%m-%d %H:%M:%S\"} {$smarty.const} 你可以直接访问PHP常量. 例如{$smarty.const._MY_CONST_VAL} {$smarty.capture} 可以通过 {capture}..{/capture}结构 截取输出可以使用{$smarty} 变量访问. [Page] {$smarty.config} {$smarty}变量 可以访问已经加载config变量. 例如 {$smarty.config.foo}就可以表示 {#foo#}. {$smarty.section}, {$smarty.foreach} {$smarty} 变量可以访问’section’和’foreach’循环属性. {$smarty.template} 显示当前被处理模板名字. {$smarty.version} 显示smarty模板版本 {$smarty.ldelim} 显示左分隔符 {$smarty.rdelim} 显示右分隔符 变量调节器 变量调节器用于变量,自定义和串www. . 可以使用’|’符号和调节器名称应用调节器. 变量调节器由赋予参数值决定其行为. 参数由’:’符号分开. 如果你用变量调节器调节变量,结果是每个值都被调节.如果你想要调节器调节整个,你必须在调节器名字前加上 @符号. 例如: {$articleTitle|@count}(这将会在输出 $articleTitle 里数目) capitalize 将变量里所有单词首字大写. 参数值boolean型决定带数字词是否首字大写默认不大写 count_characters 计算变量值里数.参数值boolean型决定是否计算空格数默认不计算空格 cat 将cat里参数值连接到给定变量后面.默认为空 count_paragraphs 计算变量里段落数量 count_sentences 计算变量里句子数量 count_words 计算变量里词数 date_format 日期格式 第个参数控制日期格式. 如果传给date_format数据是空,将使用第 2个参数作为默认时间 %a - 星期几简写 %A - 星期几全写 %b - 月份简写 %B - 月份全写 %c - 日期时间06/12/05 11:15:10 %C - 世纪时间 %d - 个月第几号(从 01 到 31) %D - 同 %m/%d/%y %e - 个月第几号号为单数则前面加空格 (从 1 到 31) %g - 世纪 %G - 世纪 [0000,9999] %h - 同%b %H - 24小时形式小时(从00到23) %I - 12小时形式小时(从01到 12) %j - 年中第几天(从 001 到 366) %k - 24小时形式小时单数字前面加空格. (从 0 到 23) %l - 12小时形式小时单数字前面加空格.(range 1 to 12) %m - 月份 (range 01 to 12) %M - 分 %n - 换行符 %p - 显示早上还是下午`am’ 或 `pm’ %r - a.m. 或 p.m.形式时间 %R - 24小时形式时间 %S - 秒 %t - tab符号 %T - 同%H:%M:%S %u - 用 [1,7],表示星期几 %U - 计算是该年第几个星期从该年第个星期天开始计算 %V - 计算是该年第几个星期, 从 01 到 53, 第个星期必须至少有4天在这年, 星期天作为这个星期第天 %w - 用数字形式表示是星期第几天, 星期天 为 0 %W - 用数字形式是该年第几个星期,从该年第个星期开始计算 %x - 显示日期:月/日/年 %X - 显示时间:小时:分钟:秒 %y - 不包括世纪年份 %Y - 包括世纪年份 %Z - 时区 %% - 输出% 其中有些有时不能正常输出 default 默认 为空变量设置个默认值. 当变量为空或者未分配时候,将由给定默认值替代输出. escape 转码 参数值为html,htmlall,url,quotes,hex,hexentity,javascrīpt默认是html转码 indent 缩进 在每行缩进串,第个参数指定缩进多少个默认是4个.第 2个参数,指定缩进用什么代替 [Page] lower 小写 This is used to lower a variable. 将变量串小写 nl2br 换行符替换成
regex_replace 正则替换 寻找和替换正则表达式.必须有两个参数参数1是替换正则表达式. 参数2使用什么文本字串来替换 replace 替换 简单搜索和替换串必须有两个参数参数1是将被替换串. 参数2是用来替换文本 spacy spacy是在串每个的间插入空格或者其他串. 参数表示将在两个的间插入串默认为个空格 _format 串格式化 是种格式化浮点数思路方法.例如十进制数.使用sprf语法格式化参数是必须规定使用格式化方式%d表示显示整 数%.2f表示截取两个浮点数 strip 去除(多余空格) 替换所有重复空格,换行和tab为单个或者指定串. 如果有参数则是指定串 strip_tags 去除所有html标签 truncate 截取 参数1规定截取数.默认是80个. 第 2个参数指定在截取那段串后加上什么.默认为... 第 3个参数决定是否精确截取默认情况下为false,则smarty不会分割单词 upper 将变量改为大写 wordwrap 行宽约束 第个参数指定段落宽度(也就是多少个行,超过这个数换行).默认80. 第 2个参数指定在约束点使用什么(默认是换行符\\n). 第 3个参数决定是否精确截取默认情况下是不精确截取就是截取时不能分开单词 内建 内建不能擅自修改 capture capture 作用是收集模板输出数据到个变量里,而不是把它们输出到页面.例如任何在 {capture name=\"foo\"}和{/capture}的间数据都被收到了由名称属性指定变量{$foo}里或者{$smarty.capture.foo}里 如果没有名字属性,将使用 \"default\".每个{capture}都必须对应{/capture},也不能嵌套使用capture config_load 引用配置文件 file是必须介绍说明要包含进来配置文件名称section介绍说明要加载部分名称scope被处理变量作用域.必须是 local,parent或者global. local意思是变量将在本模板里被加载. parent 意思是变量将在本模板和上级模板被加载. global意思是变量将应用到所有模板.默认为local变量是否在上级模板可视,默认为no如果scope属性已经有了 ,这个值将被忽略. foreach,foreach foreach循环是选择性section循环.用于遍历关联.foreach语法比section简单多,但是作为个折中它只能用于简 单. foreach 必须参数是from和item. from变量表示需要循环名称item表示当前元素变量名key表示当前关键字变 量名name表示访问foreach属性foreach循环名循环可以互相嵌套,被嵌套循环的间名字必须是独立.foreach 在 from变量没有值时候被执行 用来引用其他模板 file属性是必须用来表示所引用模板名字assign表示文件将要分配输出变量你可以自行用属性名=\"属性值\"方 式定义任意个局部变量 _php 用来在模板中引入php脚本file是必须用来表示php脚本路径once确定如果在模板中引用了php脚本多次是否只 装载次默认为true [Page] insert 用来包含php脚本中name是必须表示所插入脚本名称注意如果名称是name则包含则是insert_name,所以所有 要插入要有前缀insert_ 如果用了assign属性则insert输出将会分配给模板变量而不会显示 scrīpt表示要引用脚 本路径这个产生内容将不会被缓存Cache在每次该页时重新执行适用于广告投票查询结果等互动地方 ,, 语句和和条件同php差不多但每个词的间必须用空格分割开也有些新条件语句列举如下:eq相等ne、neq不相等 gt大于lt小于 gte、ge大于等于lte、le 小于等于not非mod求模is [not] div by是否能被某数整除is [not] even是否为偶数$a is [not] even by $b即($a / $b) % 2 0is [not] odd是否为奇$ a is not odd by $b即($a / $b) % 2 != 0 php php标记可以让模板中能直接使用php语言 section,section section 用来循环显示数据name和loop是必须参数name表示嵌套名. section 可以嵌套使用,但是名字必须各 不相同loop表示循环次数. section在loop参数为空输出start用来规定循环开始指针,如果值为负则从尾部计算开 始指针,默认为 0.step表示循环步数,为负则反向循环,默认为1.max设定循环最大步数.show决定是否显示 section. section也有自己变量处理section属性,用{$smarty.section.sectionname.varname} 来显示. index index用来显示当前循环指针,从0开始. index_prev 用来显示前次循环指针,从-1开始 index_next 用来显示后次循环指针. iteration 显示当前循环次数,从1开始. first 如果当前循环为第个循环,则值为true. last 如果当前循环为最后个循环,则值为true. rownum 同iteration. loop 显示最后次循环指针,可以用在section中间任何地方,也可以用在section的后. show show 决定是否显示section. total 显示总共循环次数,可以用在section中间任何地方,也可以用在section的后. strip 去掉多余空格 常规 assign assign用来在执行模板时分配变量值.var,value是必须参数.var为要分配值变量名,value为分配值. counter counter 用来输出个计数. 可以用多个计数,但是名字必须各不相同.name表示计数器名,默认为default.start表示 计数值,默认为 1.skip计数间隔,默认为1.direction表示计数方向,up或down,默认为up.pr表示是否打印该值,默 认为 true.assign定义模板变量,计数器输出将被分配到assign定义变量中. cycle Cycle用来循环显示组数值. name表示cycle名,values(\"值1\",\"值2\",...)表示循环显示组数值.pr表示是否显示 .advance决定是否显示下个数值. delimiter决定value分隔符,默认为逗号. assign定义模板变量,cycle输出将被 分配到assign定义变量中. debug debug可以显示所有分配了值变量,但是不显示模板内容,output属性决定显示格式html或javascrīpt,默认是 html. [Page] eval eval用来在变量里插入变量var是插入变量名assign把输出分配给个变量 fetch 用来取得文件内容并输出文件内容可以取得本地文件http文件和ftp文件file是取得文件路径 assign把输出分配 给个变量 html_checkboxes html_checkbox 用来用给定数据创建checkboxname表示checkbox名称values表示checkbox值output表示 checkbox 显示selected表示被选选项值options表示组checkbox值和显示separator表示分割每个 checkbox符号labels表示给输出添加标签默认为true html_image html_image用来为个图片创建html标签如果height和width不分配值将会自动生成file是图片路径 heightwidthalt同html标签basedir是图片相对路径开始目录路径默认为服务器根目录href定义图片链接 html_options 输出下拉列表参数有namevaluesoutputselectedoptions html_radios 输出单选框参数同复选框 html_select_date prefix 定义各个下拉列表名字前缀默认为Date_time决定使用时间默认是当前时间start_year决定下拉列表开始 年份可以用年份表示也可以用和当前年份相对年数来表示默认是当前年份end_year决定下拉列表结束年份可以 用年份表示也可以用和当前年份相对年数来表示默认是当前年份display_days决定是否显示日期 display_months决定是否显示月份display_years决定是否显示年份month_format决定显示月份格式默认为 %Bday_format决定显示日期格式默认为%02d day_value_format决定日期值格式默认为 %dmonth_value_format决定月份值格式默认为%m year_as_text决定是否将年份按文本格式输出 reverse_years决定是否反向输出各年份field_.gif' />用来取得组变量可以用 name[Day],name[Month],name[Year]方式从form取得获得值day_sizemonth_size year_size添加大小标签 all_extraday_extramonth_extrayear_extra添加额外属性到select 或input标签field_order决定年月日下拉列 表顺序默认为MDYfield_separator区别下拉列表的间分隔符默认是\\ nyear_emptymonth_emptyday_empty是在各下拉列表第栏显示内容 html_select_time prefix 定义各个下拉列表名字前缀默认为Time_time决定使用时间默认是当前时间display_hours决定是否显示 小时 display_minutes决定是否显示分钟display_seconds决定是否显示秒数display_meridian 决定是否显示 上午或下午即显示am/pmuse_24_hours 决定是否24小时制minute_erval 决定分钟的间间隔 second_erval 决 定秒数的间间隔field_.gif' />用来取得组变量可以用name[Hour],name [Minute],name[Second]方式从 form取得获得值all_extrahour_extraminute_extra second_extra meridian_extra添加额外属性到select或 input标签 html_table loop 定义用于循环组数据cols决定列数目rows决定行数目如果其中个为空另个有值则根据元素个数和有值属性 来计算另个值两者默认值为3inner决定元素列举方向cols则列跟着列排列rows则行跟着行排列默认为 colstable_attr tr_attrtd_attr分别为tabletrtd增加标签如果tr_attrtd_attr是将会循环增加标签trailpad 用来填 充最后行没有值单元格默认是 hdir决定每行元素排列方向从左到右right或从右到左left默认为rightvdir决定每 列排列方向从上到下down或从下到上up默认为down [Page] math 进行数字运算操作equation和var是必须 equation定义运算式可以使用运算符有+, -, /, *, abs, ceil, cos, exp, floor, log, log10, max, min, pi, pow, rand, round, sin, sqrt, srans and tanvar给运算变量赋值format确定结 果格式assign将输出赋给个参数 mailto 使用mailto能使网络蜘蛛很难获取你 email地址但是能在网页上正常显示他把email地址进行了加密处理 address是必须定义email地址text是显示在页面上文本内容默认是email地址encode是加密email地址方式可 以是nonehex或javascrīpt默认是none如果要把邮件发给其他邮箱可以用cc抄送email地址的间用,分割bcc则为 密件抄送subject是邮件主题sgroups是发表内容新闻组新闻组的间用隔开extra添加附加标签followupto意思 不知 textformat textformat用来格式化文本他会去掉空格和特殊和规定行宽和缩进style规定当前格式indent规定缩进位数 indent_first规定第行缩进indent_char用来缩进默认是个空格wrap规定行宽即行数默认是80wrap_char规定每 行分隔符默认是\\nwrap_cut决定是否分割单词assign将输出分配给变量 常量 SMARTY_DIR 是到smarty类目录完全路径必须以/结束如果没有定义将会自动决定路径. SMARTY_CORE_DIR 是到smarty类core文件目录完全路径必须以/结束如果没有定义将会自动定义为smarty_dir路径下面子目录. 变量 $template_dir 默认模板目录名默认为\"./templates\". $compile_dir 默认编译模板目录名默认为\"./templates_c\" $config_dir 默认config文件目录名默认为\"./configs\". $plugins_dir 默认插件目录名默认为\"plugins\". $debugging debugging控制台即个显示变量窗口. $debug_tpl debug窗口模板 $debugging_ctrl 另种控制debugging思路方法 $autoload_filters 对所有模板使用过滤这个变量是个其中关键字是过滤类型值是过滤名字 $compile_check 每次php执行将是否查看模板内容是否改变 $caching 决定是否缓存Cache文件执行生成文件 $cache_dir 默认模板缓存Cache目录名默认为\"./cache\". $cache_letime 缓存Cache模板过期时间以秒计算. $caching值为-1则缓存Cache模板永不过期. 2009-2-12 3:36:16 疯狂代码 http://www.crazycoder.cn/

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档