一,smarty插件介绍

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

二,smarty插件命名规则

1,插件文件名命名规则

type.name.php

type有以下几种

function

modifier

block

compiler

prefilter

postfilter

outputfilter

resource

insert

例如:modifier.date_format.php这个就是smarty自带的日期插件的文件名

2,插件文件里面的函数命名规则

smarty_type_name()

例如:smarty_modifier_date_format

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

三,添加自定义插件功能

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

1,添加modifier插件

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

function smarty_modifier_reverse($string)

{

if(is_string($string)){

return strrev($string);

}else{

return false;

}

}

?>

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

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

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

reverse == {$test|reverse}

上面的这个例子是把一个字符串进行反转,结果是: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'], "

  • ".$_html_result."

");

} else {

return "

  • ".implode("\n",$_html_result)."

";

}

}

function smarty_function_html_lis_output($class, $value, $output, $extra, $separator, $labels, $js) {

$_output = '';

if ($labels) $_output .= '';

$_output .= '

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", "οnclick=sep()");

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

{html_lis options=$cust_lis js=$onclick}

d),输入结果为

  • 中国
  • 上海
  • 合肥
  • 六安

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

php打印模板插件,smarty的插件功能是smarty模板的精华相关推荐

  1. 免费全功能响应式模板:黑暗元素

    免费全功能响应式模板:黑暗元素 #模板 预览: 部分页面展示: 演示及下载: 演示地址 免费下载 更多模板请立刻访问 模板集市 介绍: 全功能响应式模板,支持ipad,iphone 浏览器兼容:现代浏 ...

  2. 模板插件aTpl.js新增功能

    摘要: aTpl.js是一款模板插件,该插件支持ie5+,chrome等浏览器以及移动端浏览器,支持for和if语法,以及表达式.最近对aTpl.js模板插件增加了新的功能,支持字符串模板,同时增加了 ...

  3. typecho模板ajax,【完善版】Typecho不使用插件实现Ajax评论功能

    [完善版]Typecho不使用插件实现Ajax评论功能 作者:佚名 来源:爱好者 时间:2020-03-31 我之前写过<Typecho不使用插件实现Ajax评论功能>这篇文章,文章中对绛 ...

  4. 一个smarty 分页插件

    <?php /*** @功能 smarty分页插件* @author 肖红阳* @使用方法 {[listpage page=$initpager.page pageSize=$initpager ...

  5. pr扫光转场插件_2020年最新pr转场特效:300套模板+200集视频教程+插件,送你参考...

    作为职场小白,如何正确有效的学习好PR剪辑?这是很多新手在入门阶段所迷茫的,PR本身是一款专业的视频剪辑,后期转场,视频特效软件,有很多专业人士在使用也有很多爱好者或需求不是很大的朋友们使用. 学习p ...

  6. Discuz X3.4 插件创建与插件模板配置简介

    本篇博客将介绍现行Discuz! X3.4软件中插件的概念.插件的工作原理以及如何自己创建新插件或者修改插件模板. 本文内容来自我们团队项目开发过程中对Discuz! X3.4软件的学习理解,博客既是 ...

  7. 下载附带.php,PHP开发的优客365网址导航商业精华版1.1.6版本源码带WAP手机版附带三款模板和四款插件-资源下载随便下源码网...

    PHP开发的优客365网址导航商业精华版1.1.6版本源码,带WAP手机版,附带三款模板和四款插件 p优客365网站分类导航系统是个跨平台的开源软件,基于PHPMYSQL开发构建的开源网站分类目录管理 ...

  8. mybatis-plus 结合p6spy实现SQL分析打印,及其SQL美化插件

    mybatis-plus 执行SQL分析打印,及其SQL美化插件 该功能依赖 p6spy 组件,完美的输出打印 SQL 及执行时长 3.1.0 以上版本 p6spy 依赖引入 <dependen ...

  9. jquery_jquery插件、jqueryUI使用方法、自定义jquery插件(一个插件其实就是一个功能)...

    1.jquery插件 比如:演示如下 注意复制代码时要注意引用文件的路径是不是对的. 2.jqueryUI jqueryUI里面集合了很多用jquery封装的小功能 比如:案例演示如下 3.可以自己封 ...

最新文章

  1. 伯克利论断:Serverless 才是云时代的主宰
  2. spring aop实现过程之二Spring AOP中拦截器链
  3. Tomcat Instance in Eclipse and in local folder
  4. a标签隐藏真实地址_家庭影院布线非常杂乱应该怎么补救?A/V电缆管理的7个技巧...
  5. AUTOSAR从入门到精通100讲(三)-基于UDS服务的BootLoader架构和刷写流程
  6. canvas合成图片 圣诞节新技能戴帽
  7. vision transformer(viT)教学视频【通俗易懂】
  8. 关于LabVIEW视觉ROI的读取与存储
  9. php pg_fetch_row,pg_fetch_row
  10. 工作组win7计算机无法访问,win7系统没有权限访问工作组计算机的解决方法
  11. 给git命令设置别名
  12. 9月6日 星期二 晴(晚上有雨)
  13. Solaris 11中的变化
  14. 精通开关电源设计第三版pdf_设计类电子书合集
  15. CSS网页切图经验与要点
  16. mtk现在不支持语言的字库和输入法,支持的字库和输入法
  17. 【实验】阿里云大数据助理工程师认证(ACA)- ACA认证配套实验-03-MaxCompute内置函数
  18. java单链表反转(头插法)详解
  19. 计算机开始处无法搜索内容,win10系统电脑搜索功能无法找到内容的解决方法
  20. sm4加密算法C/C++源码

热门文章

  1. Express app.get 进行路由 Route 设置
  2. SAP Fiori Elements controller extension 的加载原理
  3. kitten编程猫里的函数定义,函数实现和函数调用原理
  4. SAP Spartacus里的@mixin visible-focus
  5. 论中国和欧洲程序员对加班的态度
  6. SAP Spartacus里的converter实例化逻辑
  7. Angular源代码里字母Theta的含义
  8. Angular list列表的事件响应实现
  9. 将某个网站嵌入到iframe的测试
  10. Hybris里类似ABAP Netweaver的DDIC - 如何做data type的extension