一,smarty插件介绍
smarty的插件放在/smarty/libs/plugins下面,它为程序的开发 提供了很大的方便,例如:{$yesterday|date_format:"%H:%M:%S"}smarty自带的日期格式化插件,对变 量$yesterday进行格式化。在我们的php文件中,并不需要对date_format进行处理,我们只要拿来用就好了。
二,smarty插件命名规则
1,插件文件名命名规则
type . name .php
type有以下几种
- function
- modifier
- block
- compiler
- prefilter
- postfilter
- outputfilter
- resource
- insert
例如:modifier .date_format .php这个就是smarty自带的日期插件的文件名
2,插件文件里面的函数命名规则
smarty_type _name ()
例如:smarty_modifier _date_format
上面的紫色字对应的是插件类型,桔黄色字对应的是插件名称
三,添加自定义插件功能
个人觉得modifier 和function 这二种类型的插件最有用,也是最常用的。所以下面我以这二个类型来举例子
1,添加modifier插件
a ),/smarty/libs/plugins下面建个文件modifier.reverse.php
<?php function smarty_modifier_reverse($string) { if(is_string($string)){ return strrev($string); }else{ return false; } } ?>
b),在调用模块的文件文件里加上
$this->tpl->assign("test", "123456789");
c),在模块文件文件中加入
<div>reverse == {$test|reverse}</div>
上面的这个例子是把一个字符串进行反转,结果是:987654321
2,添加function插件
a ),/smarty/libs/plugins下面建个文件function.html_lis.php
function smarty_function_html_lis($params, &$smarty) { require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); $class = 'li_style'; $options = null; $separator = ''; $js = ''; $labels =true; $output = null; $extra = ''; foreach($params as $_key => $_val) { switch($_key) { case 'class': case 'separator': $$_key = $_val; break; case 'labels': $$_key = (bool)$_val; break; case 'js': $$_key = $_val; break; case 'options': $$_key = (array)$_val; break; case 'output': $$_key = array_values((array)$_val); break; case 'lis': $smarty->trigger_error('html_lis: the use of the "lis" attribute is deprecated, use "options" instead', E_USER_WARNING); $options = (array)$_val; break; default: if(!is_array($_val)) { $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; } else { $smarty->trigger_error("html_lis: extra attribute '$_key' cannot be an array", E_USER_NOTICE); } break; } } if (!isset($options) && !isset($values)) return ''; /* raise error here? */ $_html_result = array(); if (isset($options)) { foreach ($options as $_key=>$_val) $_html_result[] = smarty_function_html_lis_output($class, $_key, $_val, $extra, $separator, $labels, $js); } else { foreach ($values as $_i=>$_key) { $_val = isset($output[$_i]) ? $output[$_i] : ''; $_html_result[] = smarty_function_html_lis_output($class, $_key, $_val, $extra, $separator, $labels, $js); } } if(!empty($params['assign'])) { $smarty->assign($params['assign'], "<ul>".$_html_result."</ul>"); } else { return "<ul>".implode("\n",$_html_result)."</ul>"; } } function smarty_function_html_lis_output($class, $value, $output, $extra, $separator, $labels, $js) { $_output = ''; if ($labels) $_output .= ''; $_output .= '<li tip="' . smarty_function_escape_special_chars($value) . '"'; if($js) $_output .= $js ; $_output .= $extra . ' />' . $output; if ($labels) $_output .= ''; $_output .= $separator; return $_output; } ?>
b),在调用模块的文件文件里加上
$this->tpl->assign('cust_lis', array( "china" => '中国', "shanghai" => '上海', "heifei" => '合肥', "luan" => '六安')); $this->tpl->assign("onclick", "onclick=sep()");
c),在模块文件文件中加入
<div> {html_lis options=$cust_lis js=$onclick} </div>
d),输入结果为
<ul><li class="li_style" tip="china" onclick=sep() />中国 <li class="li_style" tip="shanghai" onclick=sep() />上海 <li class="li_style" tip="heifei" onclick=sep() />合肥 <li class="li_style" tip="luan" onclick=sep() />六安</ul>
上面的例子是生成ul标签的一个smarty插件,把checkbox拿过来改一改,而成的。
相关推荐
这个“最新版smarty插件”很可能指的是Smarty的3.1.33版本,这是一个稳定且功能丰富的版本。 Smarty的核心特性包括: 1. **模板和PHP代码分离**:Smarty允许开发者在PHP后端处理业务逻辑,而在前端使用模板文件...
Smarty模板插件下载,Dreamweaver的Smarty插件
同时,还可以自定义模板插件,扩展其功能。 5. **缓存机制**:Smarty支持缓存处理过的模板结果,可以大大提高动态网站的性能。通过设置缓存有效期,可以控制何时重新生成缓存。 6. **预处理和后处理**: Smarty...
通过自定义插件的方式,我们成功地在Smarty模板中实现了非数组类型的循环功能。这种方法不仅保持了模板的简洁性和可维护性,同时也提高了开发效率。对于需要频繁处理循环逻辑的项目来说,这种方法是非常值得推荐的。
在这个"Smarty模板包下载"中,我们看到的是Smarty 2.6.18版本。 Smarty 2.6.18是一个较早的版本,发布于Smarty的历史发展中。尽管如此,它依然包含了许多关键功能和特性,如: 1. **模板语法**:Smarty提供了一套...
Smarty模板的主要特点包括: 1. **模板语法**:Smarty提供了一套简洁易懂的模板语法,如`{$var}`用于输出变量,`{foreach}`用于循环遍历数组,`{if}`、`{elseif}`、`{else}`进行条件判断等,使得非程序员也能理解并...
Smarty模板引擎是一款专门为PHP开发的模板技术框架,其核心设计理念在于实现前端展示(视图)与后端逻辑(控制器和模型)的分离,使得开发者能够更专注于设计和业务处理,而不是将两者混淆在一起。作为业界知名的PHP...
5. **函数和插件**:Smarty允许自定义函数和插件,扩展其功能。例如,可以创建一个插件用于处理日期格式化或者调用外部API。 6. **配置管理**:Smarty的配置文件可以设置模板目录、缓存目录、编译目录等,便于项目...
本教程是针对自编的Smarty模板引擎进行的深入解析,通过最基础的功能实现,帮助开发者理解其工作原理。 Smarty的核心理念是“智能模板”,它提供了一种方式,让HTML模板文件可以包含PHP代码,但这些代码会被预处理...
本教程将基于Smarty模板引擎的快速入门进行详细讲解,配合提供的源代码,帮助你更好地理解和应用Smarty。 1. **Smarty的基本概念** Smarty是一个强大的PHP模板系统,它通过引入模板文件来处理动态内容,从而让...
Smarty的设计理念在于提供一种方式,让程序员用PHP编写业务逻辑,而设计师则使用HTML和CSS进行页面布局和样式设计,两者通过Smarty模板语言交互。这种分离使得开发者可以专注于后台功能的实现,而设计师则能专注于...
5. **远超其他模板引擎的功能**:除了上述特性之外,Smarty还提供了许多高级功能,比如自定义函数、插件等,使其在功能上远远超越了其他同类模板引擎。 #### 四、适宜使用Smarty的情况 1. **需要实时更新显示内容...
- **自定义插件开发**:可以通过编写自定义插件来扩展Smarty的功能,这些插件可以是一些自定义函数或类。 - **安全性增强**:为了防止用户直接访问模板文件,可以通过修改服务器配置文件(如Apache的`httpd.conf`)...
4. **插件系统**:Smarty 提供了丰富的内置函数和自定义插件机制,如`{function}`和`{modifier}`,用于扩展模板的功能,如日期格式化、字符串处理等。 5. **安全控制**:为了防止模板中的恶意代码执行,Smarty 对...
标题中的“linux+php+smarty模板的例子.zip”表明这是一个关于在Linux操作系统中使用PHP和Smarty模板引擎进行Web开发的示例项目。Smarty是PHP的一种流行模板技术,它将业务逻辑与视图层分离,使开发者可以更专注于...
下面将详细阐述Smarty模板引擎的关键知识点。 1. **基本语法**:Smarty的语法设计简洁明了,它允许在模板文件中使用花括号`{}`包裹PHP语句。例如,`{$variable}`用于输出变量,`{foreach $array as $item}`用于循环...
1. 速度:采用Smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。 2. 编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的...
通过这门课程,你将能够深入理解并熟练运用Smarty模板引擎。 首先,我们来了解一下Smarty的核心概念: 1. **模板(Template)**:这是由设计师创建的HTML文件,其中包含了一些特殊的Smarty标记。这些标记用于插入...