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模板函数的更多相关文章

  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. .NET MEF入门级例子

    学习新东西,喜欢从简单的例子入手,感觉理解和上手会快点,本文记录下我做的一个简单的mef的例子,至于理论的话百度,谷歌多的去了. Mef可以在你调整了某些功能的时候不需要重新去做代码,只需要换掉相应的 ...

  2. Git Pro - (2)分支

    Git 保存的不是文件差异或者变化量,而只是一系列文件快照. 在 Git中提交时,会保存一个提交(commit)对象,它包含一个指向暂存内容快照的指针,作者和相关附属信息,以及一定数量(也可能没有)指 ...

  3. C++设计模式-Observer观察者模式

    Observer观察者模式作用:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己 UML图: S ...

  4. 安装SQl 2008为SQL Server代理服务提供的凭据无效

    解决:安装SQl 2008为SQL Server代理服务提供的凭据无效 sql server 2008 代理服务提供的凭据无效sql server 2008 代理服务提供的凭据无效在Windows S ...

  5. IIS 发布添加网站错误:HTTP 错误 500.21 - Internal Server Error 解决方案

    原因:在安装Framework v4.0之后,再启用IIS,导致Framework没有完全安装 解决:开始->所有程序->附件->鼠标右键点击“命令提示符”->以管理员身份运行 ...

  6. 古诗词api,诗词接口,诗词api,中国诗词

    服务商:api.getlove.cn 分类:诗词 更新时间:2016-03 如果接口不满足您的要求,您可以联系qq:2265658022购买完整的数据库 免费apikey:56eab527a0facb ...

  7. leetcode174. Dungeon Game

    // learn from https://discuss.leetcode.com/topic/6912/c-dp-solution ''' class Solution { public: int ...

  8. SpringBoot Demo

    Spring Boot,微框架,确实不错,很方便. 相关网站链接: http://www.tuicool.com/articles/veUjQba https://www.gitbook.com/bo ...

  9. 转:ServletContext,ActionContext,ServletActionContext

    ServletContext ServletContext从他的package信息可以看出,它是标准的JavaEE WebApplication类库 javax.servlet.ServletCont ...

  10. jqurey的跨域使用getjson(http://www.jb51.net/Special/894.htm)

    JS的跨域问题,我想很多程序员的脑海里面还认为JS是不能跨域的,其实这是一个错误的观点:有很多人在网上找其解决方法,教其用IFRAME去解决的文章很多,真有那么复杂吗?其实很简单的,如果你用JQUER ...