`
hudeyong926
  • 浏览: 2018165 次
  • 来自: 武汉
社区版块
存档分类
最新评论

smarty的插件功能是smarty模板的精华

 
阅读更多

一,smarty插件介绍

smarty的插件放在/smarty/libs/plugins下面,它为程序的开发 提供了很大的方便,例如:{$yesterday|date_format:"%H:%M:%S"}smarty自带的日期格式化插件,对变 量$yesterday进行格式化。在我们的php文件中,并不需要对date_format进行处理,我们只要拿来用就好了。

二,smarty插件命名规则

1,插件文件名命名规则

 

type . name .php

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,插件文件里面的函数命名规则

smarty_type _name ()

例如:smarty_modifier _date_format

上面的紫色字对应的是插件类型,桔黄色字对应的是插件名称

三,添加自定义插件功能

个人觉得modifierfunction 这二种类型的插件最有用,也是最常用的。所以下面我以这二个类型来举例子

1,添加modifier插件

a ),/smarty/libs/plugins下面建个文件modifier.reverse.php

<?php
function smarty_modifier_reverse($string)
{
 if(is_string($string)){
  return strrev($string);
 }else{
  return false;
 }
}
?>

 b),在调用模块的文件文件里加上

$this->tpl->assign("test", "123456789");

 c),在模块文件文件中加入

<div>reverse == {$test|reverse}</div>   

上面的这个例子是把一个字符串进行反转,结果是:987654321

2,添加function插件

a ),/smarty/libs/plugins下面建个文件function.html_lis.php

function smarty_function_html_lis($params, &$smarty)
{
    require_once $smarty->_get_plugin_filepath('shared','escape_special_chars');
    $class = 'li_style';
    $options = null;
    $separator = '';
    $js = '';
    $labels =true;
    $output = null;
    $extra = '';
    foreach($params as $_key => $_val) {
        switch($_key) {
            case 'class':
            case 'separator':
                $$_key = $_val;
                break;

            case 'labels':
                $$_key = (bool)$_val;
                break;

            case 'js':
                $$_key = $_val;
                break;

            case 'options':
                $$_key = (array)$_val;
                break;

            case 'output':
                $$_key = array_values((array)$_val);
                break;

            case 'lis':
                $smarty->trigger_error('html_lis: the use of the "lis" attribute is deprecated, use "options" instead', E_USER_WARNING);
                $options = (array)$_val;
                break;

            default:
                if(!is_array($_val)) {
                    $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"';
                } else {
                    $smarty->trigger_error("html_lis: extra attribute '$_key' cannot be an array", E_USER_NOTICE);
                }
                break;
        }
    }

    if (!isset($options) && !isset($values))
        return ''; /* raise error here? */

    $_html_result = array();

    if (isset($options)) {

        foreach ($options as $_key=>$_val)
            $_html_result[] = smarty_function_html_lis_output($class, $_key, $_val, $extra, $separator, $labels, $js);

    } else {
        foreach ($values as $_i=>$_key) {
            $_val = isset($output[$_i]) ? $output[$_i] : '';
            $_html_result[] = smarty_function_html_lis_output($class, $_key, $_val, $extra, $separator, $labels, $js);
        }

    }

    if(!empty($params['assign'])) {
        $smarty->assign($params['assign'], "<ul>".$_html_result."</ul>");
    } else {

        return "<ul>".implode("\n",$_html_result)."</ul>";
    }
}

function smarty_function_html_lis_output($class, $value, $output, $extra, $separator, $labels, $js) {
    $_output = '';
    if ($labels) $_output .= '';
    $_output .= '<li tip="'
        . smarty_function_escape_special_chars($value) . '"';
 if($js) $_output .= $js  ;
    $_output .= $extra . ' />' . $output;
    if ($labels) $_output .= '';
    $_output .=  $separator;

    return $_output;
}

?>

  b),在调用模块的文件文件里加上

  $this->tpl->assign('cust_lis', array(
     "china" => '中国',
     "shanghai" => '上海',
     "heifei" => '合肥',
     "luan" => '六安'));
  $this->tpl->assign("onclick", "onclick=sep()"); 

 c),在模块文件文件中加入

<div>
{html_lis  options=$cust_lis js=$onclick}
</div>

 d),输入结果为

<ul><li class="li_style" tip="china" onclick=sep() />中国
<li class="li_style" tip="shanghai" onclick=sep() />上海
<li class="li_style" tip="heifei" onclick=sep() />合肥
<li class="li_style" tip="luan" onclick=sep() />六安</ul>

 上面的例子是生成ul标签的一个smarty插件,把checkbox拿过来改一改,而成的。

分享到:
评论

相关推荐

    最新版smarty插件

    最新版的smarty。Smarty是一个使用PHP写出来的模板引擎,是目前业界最著名的PHP模板引擎之一。

    Dreamweaver的Smarty插件

    Smarty模板插件下载,Dreamweaver的Smarty插件

    smarty模板中文手册

    1. 速度:采用Smarty编写的程序可以获得最大速度的提高,这一点是相对于其它的模板引擎技术而言的。 2. 编译型:采用Smarty编写的程序在运行时要编译成一个非模板技术的PHP文件,这个文件采用了PHP与HTML混合的...

    PHP Smarty 模板引擎手册 CHM.rar

    Smarty 模板引擎教程 chm格式,内容主要有基本语法、变量、组合修改器、内建函数、自定义函数、配置文件、控制台调试、缓存、插件扩展、使用技巧和经验等,比较详细的一个中文手册,如上图示。

    Smarty_smarty_

    Smarty 模板引擎教程,内容主要有基本语法、变量、组合修改器、内建函数、自定义函数、配置文件、控制台调试、缓存、插件扩展、使用技巧和经验等,比较详细的一个中文手册

    js模板引擎(基于数据方式,仿smarty)

    js模板引擎(基于数据方式,仿smarty),jQuery插件,有短标签,块标签,字段标签,简单易用

    编写Smarty插件在模板中直接加载数据的详细介绍

    本篇文章是对编写Smarty插件在模板中直接加载数据进行了详细的分析介绍,需要的朋友参考下

    兄弟连smarty3视频教程

    资源名称:兄弟连smarty3视频教程资源目录:[Smarty3]的安装与初使化及调优[Smarty3]的学习方式和基本语法[Smarty3]模板引擎定义和自定义模板引擎[Smarty3]模板中自定义函数插件[Smarty3]中变量修改器的应用[Smarty3...

    smarty手册.chm

    16. Extending Smarty With Plugins [以插件扩展Smarty] How Plugins Work [插件如何工作] Naming Conventions [命名约定] Writing Plugins [编写插件] Template Functions [模板函数] Modifiers [修正器] ...

    达内学习笔记----SMARTY笔记.docx

    本文档是关于SMARTY的...九、通过SMARTY插件的功能加入函数和块 十、SMARTY中的变量调解器 十一、Smarty内建函数 十三、运用SMARTY自动创建表单标签 目录是按学习进度自己整理的,可能不很规范,但是内容绝对经典

    Smarty中文手册 chm版

    16. Extending Smarty With Plugins [以插件扩展Smarty] How Plugins Work [插件如何工作] Naming Conventions [命名约定] Writing Plugins [编写插件] Template Functions [模板函数] Modifiers [修正器] ...

    PHP表白投票系统SMARTY模板

    PHP表白投票系统,佣有微信分享插件,手机访问判断功能,有数据库功能,加密解密功能,手机号检验规则功能,获取IP地址功能,SMARTY模板功能,投票功能等等,不带数据库,需要自己根据查询语句新建数据库,功能完整可以正常使用...

    smarty3.x完全中文手册.7z

    模板设计者篇 Table of Contents[内容列表] 3. Basic Syntax [基本语法] 4. Variables [变量] 5. Variable Modifiers [变量修改器] ...16. Extending Smarty With Plugins [利用插件扩展Smarty]

    jsmart:jSmart是Smarty Javascript模板引擎,是PHP Smarty模板引擎的端口

    jSmart是Smarty模板引擎到Javascript的端口,Javascript是一个JavaScript模板库,它支持模板以及著名PHP模板引擎所有功能(函数,变量修饰符等)。 jSmart完全用JavaScript编写,没有任何DOM /浏览器或第三方...

    前端 后端 Fis3+Es6+Smarty+Tmpl

    ├─ plugin # Smarty 的插件放入这个目录 ├─ smarty.conf # 本地测试的 Smarty 引擎的配置文件 ├─ fis-conf.js # fis3 的配置文件 ├─ page # 放一些页面 ├─ server.conf # 本地测试的URL转发规则配置...

    smarty-gettext:Gettext插件可在Smarty Package文件中实现国际化。 Smarty-gettext是一个模块,为流行PHP模板引擎Smarty提供gettext支持。

    block.t.php , function.locale.php -Smarty插件。 tsmarty2c.php一个命令行实用程序,可从聪明的源文件中提取gettext字符串并将其转换为.pot (PO模板)。 安装 使用Composer: 将"smarty-gettext/smarty-...

    psGetObject:用于在模板中加载任何类型的氧化对象的 Smarty 插件

    Smarty 插件可在模板中加载任何类型的氧化对象。 OXID eShop 的免费扩展。 用法 [{ psgetobject type="oxarticle" ident="abc123" field="oxtitle" assign="oProduct" lang=1 }] 参数 type / oxid type ident / ...

    WordPress 教育课程类万战模板 Smarty 3.11完整破解(含Demo、插件包)

    特色功能:学生档案管理、科目日程管理、时间日历提醒、视频媒体管理、在线商城模块、多语言管理。 压缩包 含完整破解版主题文件、插件包、demo资源、页面PSD设计稿。

    后台管理程序框架源码,使用codeigniter框架和Smarty模板

    后台管理程序由php开发,目前只实现了基本功能:模块管理...使用codeigniter框架和Smarty模板 页面使用ACE Admin UI模板,为了结合frame做了二次修改 图形报表使用openflashchart,OFC php有不少BUG,我已经做了修复

    ThinkPHP使用Smarty第三方插件方法小结

    主要介绍了ThinkPHP使用Smarty第三方插件方法,结合实例形式总结分析了ThinkPHP使用Smarty模板的具体步骤与相关注意事项,需要的朋友可以参考下

Global site tag (gtag.js) - Google Analytics