1.{$var=...}

这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值。

  1. <{$a = 10}><!--赋值语句-->
  2. <{$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

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

test.html

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

输出结果:

循环中还存在下列目录

(1)<{$v@index }>包含当前数组的下标,开始时为0。

  1. <body>
  2. <{foreach $shuzu as $v}><!--foreach循环遍历数组-->
  3. <{$v@index }><{$v}><br /><!--输出数组里面的内容-->
  4. <{/foreach}>
  5. </body>

输出结果:

(2){iteration}

iteration包含当前循环的迭代,总是以1开始,这点与index不同,index是从0开始的。每迭代一次值自动加1。

  1. <body>
  2. <{foreach $shuzu as $v}><!--foreach循环遍历数组-->
  3. <{$v@iteration}><{$v}><br /><!--输出数组里面的内容-->
  4. <{/foreach}>
  5. </body>

输出结果:

(3){@first}

当{foreach}循环第一个时first为真。这里我们演示当第一次迭代表格头所在行。

  1. <body>
  2. <{foreach $shuzu as $v}><!--foreach循环遍历数组-->
  3. <{$v@first}><{$v}><br /><!--输出数组里面的内容-->
  4. <{/foreach}>
  5. </body>

输出结果:如果输出的是第一条数据,返回波尔型数据的真,即1.

@first可以按照下面的方法使用

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

输出结果只有第一条数据显示为红色。

(4){@last}

当{foreach}迭代到最后时last为真。这里我们演示当迭代到最后时显示一条横线。用法和{@first}一样。

(5){@show}

show属性用在检测{foreach}循环是否无数据显示,show是个布尔值(true or false)。意思就是如果返回值是true,说明这个循环是有值的,如果返回值是flase,说明这个循环是没有值的。

(6){@total}

total包含{foreach}循环的总数(整数),可以用在{forach}里面或后面。

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

显示结果:说明总共有4次循环。

7.{include}

{include}标签用于在当前模板中包含其它模板。当前模板中的任何有效变量在被包含模板中同样可用。

  1. {include file='page_header.tpl'}

自定义函数

自定义函数都可以成为插件

1.{html_select_date}

自定义函数{html_select_date}用于创建日期下拉列表,它可以显示任意年月日。下述列表中没有说明的参数会在相应的年、月、日<select>标签中以名/值的键值对形式显示出来。

  1. <body>
  2. <{html_select_date prefix='StartDate' start_year='-5'
  3. end_year='+1' display_days=false}>
  4. </body>

显示结果:

2.{textformat}

{textformat}用于格式化文本。该函数主要清理空格和特殊字符,对段落按单词边界换行和行缩进等段落格式化处理。
用户可以明确设置参数,或使用预处理风格。目前只有唯一可用风格"email"。

下面是从文件目录里面找变量调节器

变量调节器文件统一放在了D:\wamp\www\project\libs\plugins里面

1.modifiercompiler.upper.php文件是用来转大写的,下面是其代码。

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

2.可以根据默认的插件自己来写插件,自己的插件目录为D:\wamp\www\project\plugins

下面建一个改变字符串颜色的调节器,文件名为modifier.color.php,注意文件名的命名和调节器名字的写法。

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

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

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

前端页面test.html显示

  1. <body>
  2. <{$a|color}><!--注意引入的写法-->
  3. </body>

结果显示为

3.下面看D:\wamp\www\project\plugins里面的function.shuchu.php文件

下面是文件的内容

  1. <?php
  2. function smarty_function_shuchu($args)//$args是传过来的变量
  3. {
  4. for($i=0;$i<10;$i++)//循环输出了10次aaaaaaaa
  5. {
  6. echo "aaaaaaaa<br>";
  7. }
  8. }

如果没有参数要传,就不需要写参数。

  1. <body>
  2. <{shuchu}><!--直接输出就可以,没有参数就不需要写参数-->
  3. </body>

Smarty模板函数的更多相关文章

  1. 12月15日下午Smarty模板函数

    1.{$var=...} 这是{assign}函数的简写版,你可以直接赋值给模版,也可以为数组元素赋值. <{$a = 10}><!--赋值语句--> <{$a}> ...

  2. Smarty 模板引擎 fetch()和display()函数的区别?

    Smarty模板函数里面有这样一个方法:fetch("template.htm"),他和display("template.htm");最大的不同就是fetch ...

  3. 第八十八天请假 PHP smarty模板 变量调节器,方法和块函数基本书写格式

    变量调节器 : 文件命名格式(modifier.名称.php)  前端调用方式<{变量|名称:参数:参数……}>可组合使用,用|隔开 <?php /* 命名格式 smarty_mod ...

  4. 在smarty模板中使用PHP函数的方法

    在smarty模板中如果要在显示的资料使用php函数时,如果是只有一个参数的函数比如说去空白的trim会写成 sample1 代码如下: <{$colname|trim}> 那如果使用像i ...

  5. 四、smarty模板的自定义函数

    smarty模板的自定义函数(这里介绍的是常用) 分为三个种类: 1.  变量调节器 2.  函数 3.  块函数 三个种类插件的用法: 1.  变量调解器的用法, <{$var|myfun:a ...

  6. smarty模板配置代码详细说明及如何注册自己的smarty函数

    下面为smarty模板的配置文件,smarty配置的详细说明以及如何注册自己所需要的smarty函数 config.inc.php <?php /** * Smarty 调用 * www.daf ...

  7. a++ ++a 文件上传函数错误 smarty模板特点

    b = a++; 会先把a初始的值赋值给b,然后a自增1. c = ++a; 先把a自增1,再把增1以后的结果赋值给c.  只要记住在使用的时候  $a++  是先返回$a,再将$a本身的值改变.   ...

  8. 五,Smarty模板技术/引擎——自定义函数机制

    自建函数是smarty提供的函数,不允许修改,只能被调用: 自定义函数是自己编写函数,注册成为smarty的函数,之后可以被调用: 示例:使用smarty自定义函数的机制,编写一个函数myfun1,通 ...

  9. ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案

    好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...

随机推荐

  1. Android 进程通信机制之 AIDL

    什么是 AIDL AIDL 全称 Android Interface Definition Language,即 安卓接口描述语言.听起来很深奥,其实它的本质就是生成进程间通信接口的辅助工具.它的存在 ...

  2. 尚学堂Spring视频教程(一):模拟Spring

    Spring简单的说就是作为控制反转的容器,看这篇文章前需要先搞懂“控制反转和依赖注入“这个设计模式 我们先来模拟Spring,实现用户添加的功能,新建WEB项目”Spring_0100_Abstra ...

  3. Hibernate使用

    实现类: public class InfoDAOImpl extends BaseDao<Info> 1.List<Object[]> midlist=super.creat ...

  4. NSRunLoop详解

    1.NSRunLoop是IOS消息机制的处理模式 NSRunLoop的主要作用:控制NSRunLoop里面线程的执行和休眠,在有事情做的时候使当前NSRunLoop控制的线程工作,没有事情做让当前NS ...

  5. Java值传递以及引用的传递、数组的传递!!

    转(http://blog.csdn.net/niuniu20008/article/details/2953785) 许多编程语言都有2种方法将参数传递给方法------按值传递和按引用传递. 与其 ...

  6. RSA加密算法总结

    RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准. RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进 ...

  7. DataURL详解--转自格桑blog

    DataURI详解 Posted on 2013 年 09 月 09 日 by admin DataURI,不算新东西,却一直没用过,前些日子在webapp中用了点DataURI,就做了下相关的了解, ...

  8. ACM知识点

    基础算法 高精 模拟 分治 贪心 排序 DFS 迭代加深搜索 BFS 双向BFS 动态规划 DAG上DP 树上DP 线性DP 图算法 最短路 FLYD DJATL BF 最大流 Dinic ISAP ...

  9. Entity Framework学习笔记——错误汇总

    之前的小项目做完了,到了总结经验和更新学习笔记的时间了.开始正题之前先啰嗦一下,对之前的学习目标进行一个调整:“根据代码生成表”与“生成数据库脚本和变更脚本”合并为“Code First模式日常使用篇 ...

  10. 《Linux企业应用案例精解(第2版)》新书发售啦

    本书在出版当年就获得了不错的销量,同时被中国科学院国家科学图书馆.中国国家图书馆.首都图书馆.清华大学.北京大学等上百所国内综合性大学图书馆收录为馆藏图书,在IT业界赢得了良好的口碑.随后2012年年 ...