Smarty模板函数
1.{$var=...}
这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值。
- <{$a = 10}><!--赋值语句-->
- <{$a}><!--输出语句,输出结果为10-->
2.{appeng}
{append}用于在模板执行期间建立或追加模板变量数组。
3.{assign}
{assign}用来在模板运行时为模板变量赋值。
4.{block}
{block}用来定义一个命名的模板继承源区域。意思就是一个模板可以继承另外一个模板。例如套用phpcms模板时,把头部文件header和尾部文件footer单写出来,每个页面引入这两个页面就可以了。
5.{config_load}
{config_load}用来从配置文件中加载config变量(#variables#)到模版。
6.{for}、{foreach}、{section}
{for}、{foreach}、{section}都是用来循环输出的。其中{section}已经被淘汰了,基本上不用了。
下面用foreach遍历出数组:
test.php

- <?php
- session_start();
- //引入配置文件
- include("../init.inc.php");//init.inc.php里面已经造smarty对象了。
- $attr = array("hello","world","ni","hao");//写一个数组
- $smarty->assign("shuzu",$attr);//把数组注入smarty模板里面
- $smarty->display("test.html");//调用模板文件来显示

test.html

- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>无标题文档</title>
- </head>
- <body>
- <{foreach $shuzu as $v}><!--foreach循环遍历数组-->
- <{$v}><br /><!--输出数组里面的内容-->
- <{/foreach}>
- </body>
- </html>

输出结果:
循环中还存在下列目录
(1)<{$v@index }>包含当前数组的下标,开始时为0。
- <body>
- <{foreach $shuzu as $v}><!--foreach循环遍历数组-->
- <{$v@index }><{$v}><br /><!--输出数组里面的内容-->
- <{/foreach}>
- </body>
输出结果:
(2){iteration}
iteration包含当前循环的迭代,总是以1开始,这点与index不同,index是从0开始的。每迭代一次值自动加1。
- <body>
- <{foreach $shuzu as $v}><!--foreach循环遍历数组-->
- <{$v@iteration}><{$v}><br /><!--输出数组里面的内容-->
- <{/foreach}>
- </body>
输出结果:
(3){@first}
当{foreach}循环第一个时first为真。这里我们演示当第一次迭代表格头所在行。
- <body>
- <{foreach $shuzu as $v}><!--foreach循环遍历数组-->
- <{$v@first}><{$v}><br /><!--输出数组里面的内容-->
- <{/foreach}>
- </body>
输出结果:如果输出的是第一条数据,返回波尔型数据的真,即1.
@first可以按照下面的方法使用

- <body>
- <{foreach $shuzu as $v}><!--foreach循环遍历数组-->
- <{if $v@first}><!--判断是不是显示的第一条数据-->
- <span style="color:red"><{$v}></span><br /><!--如果是第一条数据,就显示为红色-->
- <{else}><!--如果不是第一条数据-->
- <{$v@first}><{$v}><br /><!--直接输出数组里面的内容-->
- <{/if}>
- <{/foreach}>
- </body>

输出结果只有第一条数据显示为红色。
(4){@last}
当{foreach}迭代到最后时last为真。这里我们演示当迭代到最后时显示一条横线。用法和{@first}一样。
(5){@show}
show属性用在检测{foreach}循环是否无数据显示,show是个布尔值(true or false)。意思就是如果返回值是true,说明这个循环是有值的,如果返回值是flase,说明这个循环是没有值的。
(6){@total}
total包含{foreach}循环的总数(整数),可以用在{forach}里面或后面。

- <body>
- <{foreach $shuzu as $v}><!--foreach循环遍历数组-->
- <{if $v@first}><!--判断是不是显示的第一条数据-->
- <span style="color:red"><{$v}></span><br /><!--如果是第一条数据,就显示为红色-->
- <{else}><!--如果不是第一条数据-->
- <{$v@first}><{$v}><br /><!--直接输出数组里面的内容-->
- <{/if}>
- <{$v@total}>
- <{/foreach}>
- </body>

显示结果:说明总共有4次循环。
7.{include}
{include}标签用于在当前模板中包含其它模板。当前模板中的任何有效变量在被包含模板中同样可用。
- {include file='page_header.tpl'}
自定义函数
自定义函数都可以成为插件
1.{html_select_date}
自定义函数{html_select_date}用于创建日期下拉列表,它可以显示任意年月日。下述列表中没有说明的参数会在相应的年、月、日<select>标签中以名/值的键值对形式显示出来。
- <body>
- <{html_select_date prefix='StartDate' start_year='-5'
- end_year='+1' display_days=false}>
- </body>
显示结果:
2.{textformat}
{textformat}用于格式化文本。该函数主要清理空格和特殊字符,对段落按单词边界换行和行缩进等段落格式化处理。
用户可以明确设置参数,或使用预处理风格。目前只有唯一可用风格"email"。
下面是从文件目录里面找变量调节器
变量调节器文件统一放在了D:\wamp\www\project\libs\plugins里面
1.modifiercompiler.upper.php文件是用来转大写的,下面是其代码。

- function smarty_modifiercompiler_upper($params)//变量调节器的名字,()里面传一个参数。
- {
- if (Smarty::$_MBSTRING) {//处理数据
- return 'mb_strtoupper(' . $params[0] . ', \'' . addslashes(Smarty::$_CHARSET) . '\')';
- }
- // no MBString fallback
- return 'strtoupper(' . $params[0] . ')';//返回处理完的数据
- }

2.可以根据默认的插件自己来写插件,自己的插件目录为D:\wamp\www\project\plugins
下面建一个改变字符串颜色的调节器,文件名为modifier.color.php,注意文件名的命名和调节器名字的写法。

- <?php
- function smarty_modifier_color($str)//modifier是变量调节器的名字,color是变量调节器名称。()里面必须有一个参数,这个参数是拿来改变颜色的变量
- {
- $str = "<span style='color:red'>{$str}</span>";//给变量加上样式
- return $str;//将变量返回
- }

在test.php页面里面写一个变量,并且将处理完的变量注入到smarty模板里面。

- <?php
- session_start();
- //引入配置文件
- include("../init.inc.php");//init.inc.php里面已经造smarty对象了。
- $a = "hello";//要传过去的变量
- $smarty->assign("a",$a);//把变量注入smarty模板里面
- $smarty->display("test.html");//调用模板文件来显示

前端页面test.html显示
- <body>
- <{$a|color}><!--注意引入的写法-->
- </body>
结果显示为
3.下面看D:\wamp\www\project\plugins里面的function.shuchu.php文件
下面是文件的内容

- <?php
- function smarty_function_shuchu($args)//$args是传过来的变量
- {
- for($i=0;$i<10;$i++)//循环输出了10次aaaaaaaa
- {
- echo "aaaaaaaa<br>";
- }
- }

如果没有参数要传,就不需要写参数。
- <body>
- <{shuchu}><!--直接输出就可以,没有参数就不需要写参数-->
- </body>
Smarty模板函数的更多相关文章
- 12月15日下午Smarty模板函数
1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...
- Smarty 模板引擎 fetch()和display()函数的区别?
Smarty模板函数里面有这样一个方法:fetch("template.htm"),他和display("template.htm");最大的不同就是fetch ...
- 第八十八天请假 PHP smarty模板 变量调节器,方法和块函数基本书写格式
变量调节器 : 文件命名格式(modifier.名称.php) 前端调用方式<{变量|名称:参数:参数……}>可组合使用,用|隔开 <?php /* 命名格式 smarty_mod ...
- 在smarty模板中使用PHP函数的方法
在smarty模板中如果要在显示的资料使用php函数时,如果是只有一个参数的函数比如说去空白的trim会写成 sample1 代码如下: <{$colname|trim}> 那如果使用像i ...
- 四、smarty模板的自定义函数
smarty模板的自定义函数(这里介绍的是常用) 分为三个种类: 1. 变量调节器 2. 函数 3. 块函数 三个种类插件的用法: 1. 变量调解器的用法, <{$var|myfun:a ...
- smarty模板配置代码详细说明及如何注册自己的smarty函数
下面为smarty模板的配置文件,smarty配置的详细说明以及如何注册自己所需要的smarty函数 config.inc.php <?php /** * Smarty 调用 * www.daf ...
- a++ ++a 文件上传函数错误 smarty模板特点
b = a++; 会先把a初始的值赋值给b,然后a自增1. c = ++a; 先把a自增1,再把增1以后的结果赋值给c. 只要记住在使用的时候 $a++ 是先返回$a,再将$a本身的值改变. ...
- 五,Smarty模板技术/引擎——自定义函数机制
自建函数是smarty提供的函数,不允许修改,只能被调用: 自定义函数是自己编写函数,注册成为smarty的函数,之后可以被调用: 示例:使用smarty自定义函数的机制,编写一个函数myfun1,通 ...
- ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案
好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...
随机推荐
- Android 进程通信机制之 AIDL
什么是 AIDL AIDL 全称 Android Interface Definition Language,即 安卓接口描述语言.听起来很深奥,其实它的本质就是生成进程间通信接口的辅助工具.它的存在 ...
- 尚学堂Spring视频教程(一):模拟Spring
Spring简单的说就是作为控制反转的容器,看这篇文章前需要先搞懂“控制反转和依赖注入“这个设计模式 我们先来模拟Spring,实现用户添加的功能,新建WEB项目”Spring_0100_Abstra ...
- Hibernate使用
实现类: public class InfoDAOImpl extends BaseDao<Info> 1.List<Object[]> midlist=super.creat ...
- NSRunLoop详解
1.NSRunLoop是IOS消息机制的处理模式 NSRunLoop的主要作用:控制NSRunLoop里面线程的执行和休眠,在有事情做的时候使当前NSRunLoop控制的线程工作,没有事情做让当前NS ...
- Java值传递以及引用的传递、数组的传递!!
转(http://blog.csdn.net/niuniu20008/article/details/2953785) 许多编程语言都有2种方法将参数传递给方法------按值传递和按引用传递. 与其 ...
- RSA加密算法总结
RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准. RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进 ...
- DataURL详解--转自格桑blog
DataURI详解 Posted on 2013 年 09 月 09 日 by admin DataURI,不算新东西,却一直没用过,前些日子在webapp中用了点DataURI,就做了下相关的了解, ...
- ACM知识点
基础算法 高精 模拟 分治 贪心 排序 DFS 迭代加深搜索 BFS 双向BFS 动态规划 DAG上DP 树上DP 线性DP 图算法 最短路 FLYD DJATL BF 最大流 Dinic ISAP ...
- Entity Framework学习笔记——错误汇总
之前的小项目做完了,到了总结经验和更新学习笔记的时间了.开始正题之前先啰嗦一下,对之前的学习目标进行一个调整:“根据代码生成表”与“生成数据库脚本和变更脚本”合并为“Code First模式日常使用篇 ...
- 《Linux企业应用案例精解(第2版)》新书发售啦
本书在出版当年就获得了不错的销量,同时被中国科学院国家科学图书馆.中国国家图书馆.首都图书馆.清华大学.北京大学等上百所国内综合性大学图书馆收录为馆藏图书,在IT业界赢得了良好的口碑.随后2012年年 ...