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. 用vim + xdebug 来追踪thinkphp的执行过程

    tree命令的使用几个有实际应用的参数 -a 这是默认的 -d: 只显式目录, 不需要显式目录下的文件 -L: 列出显式的深度. 当前目录下的所有东西为第一级... 在tp下, 有多个Common但是 ...

  2. [SDOI2016]游戏 树剖+李超树

    目录 链接 思路 update 代码 链接 https://www.luogu.org/problemnew/show/P4069 思路 树剖+超哥线段树 我已经自毙了,自闭了!!!! update ...

  3. pyhon 之 数据类型详解

    目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8.字典9.日期 1.字符串1.1.如何在Python中使用字符串a.使用单引号(')用单引号括起来表示字符串,例如:str='th ...

  4. asp.net core mvc 中在C# 代码中写 js 或html 文本

    https://blog.csdn.net/orichisonic/article/details/62046621 使用<text>这个伪元素来强制Razor从编译模式返回到内容模式: ...

  5. Sql 通过表名查找所有列名

    SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'ImmediacyOutKu'

  6. Vue.set全局操作

    Vue.set 的作用就是在构造器外部操作构造器内部的数据.属性或者方法.比如在vue构造器内部定义了一个count为1的数据,我们在构造器外部定义了一个方法,要每次点击按钮给值加1.就需要用到Vue ...

  7. SAP-批量修改主数据(客户、供应商、物料)

    SAP-批量修改主数据(客户.供应商.物料) TCODE: MASS 对于批量修改主数据如客户,供应商等,可以试用一下Mass , 它所能修改的范围如下: 选定要修改的对象后,点击运行,会要求选择需要 ...

  8. 【链接】linuxCentOS权限问题修复(chmod777-R或者chmod755- http://www.cnblogs.com/kofxxf/p/5220836.html

    [链接]linuxCentOS权限问题修复(chmod777-R或者chmod755- http://www.cnblogs.com/kofxxf/p/5220836.html

  9. QT读文件夹内所有文件名

    void monizhuzhan::filenameInDir() { //判断路径是否存在 QDir dir(path); if(!dir.exists()) return; //查看路径中后缀为. ...

  10. SyncDictionary

    using System; using System.Collections; using System.Collections.Generic; using System.Threading; us ...