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插件的更多相关文章

  1. Smarty插件简单开发

    smarty的插件相当简单,你的网站经常会用到一些特定的Url或Controller或Action的路由地址的动态生成,通过smarty插件方式可以很轻松的实现. 在smarty/plugins目录下 ...

  2. 将kindeditor在线编辑器制作成smarty插件

    在web开发中,在线编辑器是经常要用到的功能模块,虽说配置在线编辑器没有多大难度,但是每一次编写重复的代码,总是让人感觉不爽. 本篇,就来讲解一下,如何将kindeditor制作成smarty的一个自 ...

  3. jquery,smarty,dedecms的插件思路------dede未实践

    1.jquery定义一个新函数,这个函数可以使用jquey的所有功能 2.smarty,dede其实也和jquery一样,不过是可以使用系统的一些方法而已 3.可能还有一些规范,如smarty插件的命 ...

  4. Smarty s02

    保留变量  方便使用php 不用assign {$smarty} get {$smarty.get.page} session {$smarty.session.user.name} server c ...

  5. smarty第一天

    1.安装 安装Smarty发行版在/libs/目录里的库文件(就是解压了). 2.工作原理 美工人员 1. 写模板, HTML CSS JavaScript 2. 使用Smarty表现逻辑 放变量, ...

  6. smarty的学习计划(2)

    连接数据库时,处理数据用原生态的PHP函数???NO,我们用phplib里的DB类,它文件小.加载速度快而备受人们喜爱. copy一个目录表: web(站点根目录) |-----libs(Smarty ...

  7. 6.function自定义插件的方法和使用

    Smarty插件本质上是一个function函数 有三种类型的插件: function modifier block functions 定义的方法有三种: 1.使用registerPlugin的方法 ...

  8. functions函数插件的定义和使用

    创建Smarty插件:在插件目录(plugins)里新建文件 类型.插件名.php文件,然后插件方法名字书写规范: smarty_类型_插件名([...]){}在模板(tpl文件)中调用插件时格式{插 ...

  9. 使用redis做pv、uv、click统计

    redis实时统计 设计思路: 1. 前端smarty插件(smarty_function_murl),将网站所有的连接生成一个urlid,后端根据获取的参数将需要的数据存入redis. 2.后端插件 ...

随机推荐

  1. 【POJ1509】Glass Beads

    [POJ1509]Glass Beads [题目描述]给定字符串S,并规定首尾相连成环,求出最小字典序. [输入]输入有多个数据,第一行只包括正整数N,表示有N组数据.每个数据包括一行,输入该字符串. ...

  2. 【系列教程1】Gradle入门系列三:依赖管理

    在现实生活中,要创造一个没有任何外部依赖的应用程序并非不可能,但也是极具挑战的.这也是为什么依赖管理对于每个软件项目都是至关重要的一部分. 这篇教程主要讲述如何使用Gradle管理我们项目的依赖,我们 ...

  3. [bzoj 4196][NOI 2015]软件包管理器

    大概算是一道模板题吧? 就是细节有点多 罗列一下: 如果习惯从1开始搞树的编号的话,处理输入进来的那个依赖关系在加边的时候两个都要+1,体现在代码就是i要从2枚举到n,然后输入进来的那个数要+1 这道 ...

  4. 论文笔记:Capsules for Object Segmentation

    Capsules for Object Segmentation 2018-04-16  21:49:14 Introduction: ----

  5. 改变onclick的作用域

  6. Bytom猜谜合约使用指南

    准备工作: 1.安装全节点钱包V1.0.5以上并同步完成: 2.已经发行一种资产,发行资产的方法具体见文章<如何在Bytom上发布资产?> 3.准备好一些BTM作为手续费: 设置谜语(锁定 ...

  7. Docker 开发最佳实践

    Docker development best practices The following development patterns have proven to be helpful for p ...

  8. js实现类型jq的dom加载完成

    有时候我们只想在 dom 加载完成后运行 js ,而不是等所有图片加载完成.所以不需要 onload , onload 会加载图片等其他媒体.很消耗时间. 原:http://blog.csdn.net ...

  9. Selenium 库

    自动化测试工具,支持多种浏览器.爬虫中主要用来解决JavaScript渲染问题. 用法 基本使用 from selenium import webdriver #浏览器驱动对象 from seleni ...

  10. 树莓派 无屏幕 安装Ubuntu系统 无头安装 无显示器 用网线

    能看到此篇博客的人说明都尝试失败了,会发现内存卡刷入Ubuntu后,无法通过ssh操作树莓派.是因为官方的ubuntu系统在初次运行时需要设定一些东西,类似windows第一次启动也需要设置那样,如果 ...