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. linux 子shell subshell和函数

    关于子shell, subshell 参考:http://blog.csdn.net/sosodream/article/details/5683515 系统引导时的进程为 "原始进程&qu ...

  2. 关于msf反弹后门的免杀Tips

    msf是一个很强大的工具,我经常会在渗透用它来反弹shell,不过它生成的反弹后门会被不少杀软kill,这篇文章只是讲讲我在msf中一个简单的免杀小技巧 思路 我以前接触过一款python的远控,其实 ...

  3. spring与mybatis四种整合方法

    转载: 1.采用数据映射器(MapperFactoryBean)的方式,不用写mybatis映射文件,采用注解方式提供相应的sql语句和输入参数.   (1)Spring配置文件: <!-- 引 ...

  4. 利用mysql行级锁创建数据库主键id

    存储函数: CREATE FUNCTION `getSerialNo`(`serialName` VARCHAR(50), `skip` INT) RETURNS bigint(20) COMMENT ...

  5. HTML+CSS+JS 传智 详细笔记

    HTML(1)- -毕向东老师对Html的简介 CSS- -毕老师对CSS的简介 Javascript- -毕老师对JS的简介 html&css等等练习表(W3Cscholl) js练习表回顾 ...

  6. 完美解决百度网盘、浏览器下载限速问题proxyee-down(附带win破解版云盘)

    win版破解云盘 下载: <PanDownload> 使用文档: <PanDownload使用> Mac方法 限速.限速! 平时下载东西限速倒无所谓,遇到急一点的.盯着80km ...

  7. 安装tensorflow-gpu

    pip install --upgrade tensorflow-gpu import tensorflow as tf sess = tf.Session() 如果提示如下 -- ::] Your ...

  8. sklearn dataset 模块学习

    sklearn.datasets官网:http://scikit-learn.org/stable/datasets/ sklearn.datasets 模块主要提供一些导入.在线下载及本地生成数据集 ...

  9. [原][osgEarth][JSBSim]重新整理使用JSBSim飞机动力模拟的使用

    JSBSim是一个模拟飞机飞行空气动力学的,这些都不用深入理解,只要知道自己程序怎么和JSBSim交互就行了 我使用的是JSBSim-Win32-0.9.13 原理:改写jsbsim的FGInput ...

  10. Spring的一个入门例子

    例子参考于:Spring系列教材 以及<轻量级JavaEE企业应用实战> Axe.class package com.how2java.bean; public class Axe { p ...