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.后端插件 ...
随机推荐
- C# 给类做事件的一般做法
https://docs.microsoft.com/zh-cn/dotnet/standard/events/how-to-raise-and-consume-events 第一个示例演示如何引发和 ...
- 彻底理解mysql服务器的字符集转换问题
主要参考这三个文章: https://www.xiariboke.com/article/4147.html http://blog.sina.com.cn/s/blog_690c46500100k1 ...
- bzoj1497 [NOI2006]最大获利 最大权闭合子图
链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1497 思路 最大权闭合子图的裸题 一开始知道是这个最大权闭合子图(虽然我不知道名字),但是我 ...
- hash进阶:使用字符串hash乱搞的姿势
前言 此文主要介绍hash的各种乱搞方法,hash入门请参照我之前这篇文章 不好意思hash真的可以为所欲为 在开头先放一下题表(其实就是我题解中的hash题目qwq) 查询子串hash值 必备的入门 ...
- 学习使用JUnit4进行单元测试
借用http://blog.csdn.net/andycpp/article/details/1327147等文章上面的例子和教程进行学习总结,自己敲了一遍代码,发现里面有些东西,可能版本原因,已经稍 ...
- myCat知识笔记
数据字典做成全局表(在各个分库中都有备份) ER表, 关联表都放在同一个分库上, 有利于数据关联查询 一致性hash ,/hash slot 主要为了解决分布式节点扩容时, 迁移数据的问题. mySq ...
- Dependency Injection2
IoC容器和Dependency Injection 模式 使用 Service Locator 依赖注入的最大好处在于:它消除了MovieLister类对具体 MovieFinder实现类的依赖 ...
- Codeforces Beta Round #65 (Div. 2) C. Round Table Knights
http://codeforces.com/problemset/problem/71/C 题意: 在一个圆桌上有n个人,每个人要么是1,要么就是0,现在要判断是否能由一些1相连构成正多边形. 思路: ...
- BZOJ 1070: [SCOI2007]修车(费用流)
http://www.lydsy.com/JudgeOnline/problem.php?id=1070 题意: 思路: 神奇的构图. 因为排在后面的人需要等待前面的车修好,这里将每个技术人员拆成n个 ...
- ArrayList.clear、=null、new Arraylist之间的对比区别
参考博文 1.使用ArrayList的对象方法clear() List list = new ArrayList(); List list1 = list; list.add(1); list.add ...