smarty插件
smarty插件
1.目录:放在Smarty类库下的plugins目录下面(默认存放的都是smarty自带的插件)
smarty3.0提供了自定义插件目录的方式:
$smarty->addPluginsDir(ROOT."plugins"); //自定义添加一个插件目录
2.Smarty插件命名规则
2.1 插件文件名命名规则
type.name.php
name 自定义---------------------插件名称
type 的类型有以下几种:----------插件类型
1.function --自定义函数
2.modifier --修改器
3.block
4.compiler
5.prefilter
6.postfilter
7.outputfilter
8.resource
9.insert
例如:modifier .date_format .php这个就是smarty自带的日期插件的文件名
2.2 插件文件里面的函数命名规则
smarty_type_name ()
例如:smarty_modifier _date_format
2.3如果指定的插件文件不存在或文件、函数命名不合规范,Smarty会输出对应的错误信息。
3. 添加自定义插件功能
个人觉得modifier(修改器)和function(Smarty标签)这二种类型的插件最有用,也是最常用的。所以下面我以这二个类型来举例子
3.1添加modifier插件
a )./plugins(或自定义目录)下面建个文件modifier.mystyle.php
<?php
function smarty_modifier_mystyle($var, $color, $size) {
return '<font color="'.$color.'" size="'.$size.'">'. $var .'</font>';
}
?>
参数:函数的第一个参数会自动传入模板中要修改的变量,
修改器用到的其他参数从第二个参数开始声明.
b).在模块文件文件中加入
{$var|mystyle: "red":7}
这样就可以改变变量值的颜色和字号大小了.
3.2添加function插件
a )./plugins下面建个文件function.eight_ball.php
function smarty_function_eight_ball($params, $smarty) {
//如果某个插件依赖其它插件的某些功能(事实上,一些插件被绑定在Smarty中),那么可以通过如下方法加载需要的插件
//require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
$answers = array(
'是的',
'不行',
'没门儿',
'看起来不好',
'在回答一次',
'根据情况决定'
);
$result = array_rand($answers);
return $answers[$result];
?>
参数:需要2个参数:
模板中传递给模板函数的所有属性都包含在关联数组中作为第一个参数;
第二个参数hi用来接收自动传入的Smarty对象,可以通过这个参数在函数中调用到Smarty对象中的成员.
返回值:函数的输出内容(返回值)在原位置用函数标签代替
b ). 在模块文件文件中
{* 在模中使用 eightball 函数标签:*}
问题: 我能有时间旅行吗?
答案:{eightball}.
4.补充说明
4.1按照惯例,Smarty对象通常作为最后一个参数传递给插件,但有两个例外:
1 调节器不须接受Smarty对象的传递。
2 为了向前兼容旧版Smarty,块插件将$repeat排在Smarty对象后面作为最后一个参数($smarty作为倒数第二个参数)。
smarty插件的更多相关文章
- Smarty插件简单开发
smarty的插件相当简单,你的网站经常会用到一些特定的Url或Controller或Action的路由地址的动态生成,通过smarty插件方式可以很轻松的实现. 在smarty/plugins目录下 ...
- 将kindeditor在线编辑器制作成smarty插件
在web开发中,在线编辑器是经常要用到的功能模块,虽说配置在线编辑器没有多大难度,但是每一次编写重复的代码,总是让人感觉不爽. 本篇,就来讲解一下,如何将kindeditor制作成smarty的一个自 ...
- jquery,smarty,dedecms的插件思路------dede未实践
1.jquery定义一个新函数,这个函数可以使用jquey的所有功能 2.smarty,dede其实也和jquery一样,不过是可以使用系统的一些方法而已 3.可能还有一些规范,如smarty插件的命 ...
- Smarty s02
保留变量 方便使用php 不用assign {$smarty} get {$smarty.get.page} session {$smarty.session.user.name} server c ...
- smarty第一天
1.安装 安装Smarty发行版在/libs/目录里的库文件(就是解压了). 2.工作原理 美工人员 1. 写模板, HTML CSS JavaScript 2. 使用Smarty表现逻辑 放变量, ...
- smarty的学习计划(2)
连接数据库时,处理数据用原生态的PHP函数???NO,我们用phplib里的DB类,它文件小.加载速度快而备受人们喜爱. copy一个目录表: web(站点根目录) |-----libs(Smarty ...
- 6.function自定义插件的方法和使用
Smarty插件本质上是一个function函数 有三种类型的插件: function modifier block functions 定义的方法有三种: 1.使用registerPlugin的方法 ...
- functions函数插件的定义和使用
创建Smarty插件:在插件目录(plugins)里新建文件 类型.插件名.php文件,然后插件方法名字书写规范: smarty_类型_插件名([...]){}在模板(tpl文件)中调用插件时格式{插 ...
- 使用redis做pv、uv、click统计
redis实时统计 设计思路: 1. 前端smarty插件(smarty_function_murl),将网站所有的连接生成一个urlid,后端根据获取的参数将需要的数据存入redis. 2.后端插件 ...
随机推荐
- 【做题】cf603E——线段树分治
首先感谢题解小哥,他在标算外又总结了三种做法. 此处仅提及最后一种做法. 首先考虑题目中要求的所有结点度数为奇数的限制. 对于每一个联通块,因为所有结点总度数是偶数,所以总结点数也必须是偶数的.即所有 ...
- 卸载linux系统上自带的mysql
步骤: 1.打开centos命令提示符,切换为root用户 2.输入rpm -qa|grep -i mysql命令以检查系统含有的mysql插件,回车,若没有则说明无自带mysql,系统很干净.若有显 ...
- IQR(Inter-Quartile Range)
IQR(Inter-Quartile Range)在统计中叫内距.内距又称为四分位差.具体如下:内距IQR即Inter-Quartile Range, 这是统计技术上的名词.内距又称为四分位差,是两个 ...
- VHDL 数字时钟设计
序言 这个是我在做FPGA界的HelloWorld--数字钟设计时随手写下的,再现了数字钟设计的过程 目标分析 时钟具有时分秒的显示,需6个数码管.为了减小功耗采用扫描法显示 按键设置时间,需要对按键 ...
- 【NOI 2016】优秀的拆分
Problem Description 如果一个字符串可以被拆分为 \(AABB\) 的形式,其中 \(A\) 和 \(B\) 是任意非空字符串,则我们称该字符串的这种拆分是优秀的. 例如,对于字符串 ...
- Linux命令去重统计排序
利用Linux命令进行文本按行去重并按重复次数排序 linux命令行提供了非常强大的文本处理功能,组合利用linux命令能实现好多强大的功能.本文这里举例说明如何利用Linux命令行进行文本按行去 ...
- arcgis api for js 之发布要素服务
1. 引言 如果我们要在网页端实现要素的增删改查操作,需要使用到要素服务(FeatureService),本篇文章将介绍如何发布要素服务. 1.1 什么是要素服务 在发布之前,我们先了解下要素服务:要 ...
- mybatis(错误一) 项目启动时报“Result Maps collection already contains value forxxx”的解决方案
Result Maps collection already contains value for xyx.dsw.dao.mapper.admin.quotationwish.TempTestTab ...
- 数据库无法打开到SQL Server连接
今天打开数据库,发现连接不上,弹出错误提示: 打开SQLServer Configuration Manager,发现SQL Server状态已经停止,双击启动弹出错误提示: 打开SQL Server ...
- 使用外网访问阿里云服务器ZooKeeper
参考网址: zookeeper单机/集群安装详解 使用外网访问阿里云服务器ZooKeeper 阿里云服务管理控制台 1. 阿里云ECS安装zookeeper 环境:我安装的是zookeeper3.4. ...