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. 101. Symmetric对称 Tree

    Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...

  2. SQL Server (MSSQLSERVER) 服务因 2148081668 服务性错误而停止。

    https://zhidao.baidu.com/question/151448005.html 具体步骤: 运行-> 输入:“services.msc” ->找到 “SQL Server ...

  3. sql 指定数据库中的信息操作

    查是否有该表名 SELECT * FROM sys.objects WHERE name='表名'查表字段的信息select * from syscolumns where id=Object_Id( ...

  4. P4450 双亲数

    思路 同zap-queries 莫比乌斯反演的板子 数据范围小到不用整除分块... 代码 #include <cstdio> #include <algorithm> #inc ...

  5. Android四种布局方式

    线性布局 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap ...

  6. js 数组、对象转json 以及 json转 数组、对象

    let jsonObj = $.parseJSON(jsonStr); //json字符串转化成json对象(jq方法) var jsonObj = JSON.parse(jsonStr); //js ...

  7. python FAE

    1.python 时间戳用localtime转换时间戳较大时报错 ValueError: timestamp out of range for platform time_t 2.python面向对象 ...

  8. Java—网络编程基础

    URL的应用: 获得网页源代码可以用字节流.字符流,流的获取可以用url.openStream(),也可以用con.getInputStream(): 字节流: URL url = new URL(& ...

  9. Spring依赖

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  10. 小程序之取标签中内容 例如view,text

    // index.wxml页面 data-url为自定义 {{}}中内容可为后台请求到的数据 也可为固定内容例如:data-text="哈哈哈" data-url="ht ...