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.后端插件 ...
随机推荐
- 放棋子|2012年蓝桥杯B组题解析第七题-fishers
(13')放棋子 今有 6 x 6 的棋盘格.其中某些格子已经预先放好了棋子.现在要再放上去一些,使得:每行每列都正好有3颗棋子.我们希望推算出所有可能的放法.下面的代码就实现了这个功能. 初始数组中 ...
- 【做题】spoj4060 A game with probability——dp
赛前做题时忽然发现自己概率博弈类dp很弱,心好慌.(获胜概率或最优解期望) 于是就做了这道题,续了特别久. 一开始列dp式子的时候就花了很长时间,首先搞错了两次,然后忘记了根据上一轮dp值直接确定选什 ...
- String comparison is too slow in R language
## String comparison is too slow in R language ## it will take 3 minutes, it is too slow date() strA ...
- oracle函数之 minus
“minus”直接翻译为中文是“减”的意思,在Oracle中也是用来做减法操作的 Oracle的minus是按列进行比较的,所以A能够minus B的前提条件是结果集A和结果集B需要有相同的列数,且相 ...
- 用C#.NET调用Java开发的WebService传递int,double问题,出现java无法获得值!
https://www.cnblogs.com/zhbsh/archive/2013/04/22/3035477.html 用C#.NET调用Java开发的WebService时,先在客户端封装的带有 ...
- HIHOcoder 1466 后缀自动机六·重复旋律9
思路 后缀数组+博弈论的好题,首先对两个串都建出SAM,然后题目的要求实际上就是在SAM的trans上转移即可 DAG的博弈是经典问题,然后dfs求出SG函数,两个游戏的组合就是把SG函数异或起来,异 ...
- Vue.extend提供自定义组件的构造器
Vue.extend 返回的是一个“扩展实例构造器”,也就是预设了部分选项的Vue实例构造器.经常服务于Vue.component用来生成组件,可以简单理解为当在模板中遇到该组件名称作为标签的自定义元 ...
- JOISC 2014 邮戳拉力赛(基础DP)
题意 https://loj.ac/problem/2878 思路 真的神仙题,想到就很好写,想不到就写不出来. 肯定只能一个一个邮戳按顺序分析.首先,将取一枚邮戳的路径分为四种: 上行 \(\rig ...
- Jupyter Notebook主题字体设置及自动代码补全
Jupyter Notebook用久了就离不开了,然而自带的主题真的不忍直视.为了视力着想,为了自己看起来舒服,于是折腾了一番..在github上发现了一个jupyter-themes工具,可以通过p ...
- EM算法——Expectation-Maximization
最大似然估计 一个栗子:假如去赌场,但是不知道能不能赚钱,你就在门口堵着出来一个人就问一个赚了还是赔了,如果问了5个人都说赚了,那么你就会认为,赚钱的概率肯定是非常大的. 已知:(1)样本服从分部的模 ...