前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Smarty踩坑日记 插件

Smarty踩坑日记 插件

作者头像
Meng小羽
发布2019-12-23 16:37:18
5180
发布2019-12-23 16:37:18
举报
文章被收录于专栏:Debug客栈Debug客栈

什么是Samrty的插件?

Smarty的插件本质上就是function函数。

Smarty插件的常用类型

functions 函数插件

modifiers 修饰插件

block functions 区块函数插件

如何制作和使用插件

  • 使用registerPlugin方法注册写好的自定义函数。
  • 将写好的插件放入Smarty解压目录中的lib目录下的plugins目录里。
  • php内置函数,可以自动以修饰插件(变量调节器插件)的形式在模板中使用

使用registerPlugin方法注册写好的自定义函数:

test.php文件:

代码语言:javascript
复制
<?php
    require ('../smarty/Smarty.class.php');
    $smarty = new Smarty();

    //Smarty “自编口诀-五配置两方法”
    //五配置介绍
    $smarty -> left_delimiter = "{"; //左定界符
    $smarty -> right_delimiter = "}"; //右定界符
    $smarty -> template_dir = "tpl"; //html模板的地址
    $smarty -> compile_dir  = "template_c"; //模板编译生成的文件
    $smarty -> cache_dir = "cache"; //缓存

    $str = 'abcdefg';
    $smarty->assign('str', $str);

    function test($params){
        $p1 = $params['p1'];
        $p2 = $params['p2'];
        $name = $params['name'];

        return '传入的参数1值为:'.$p1.',传入的参数2值为:'.$p2 .'新加的'.$name;
    }
    //registerPlugin函数  registerPlugin() — 注册插件方法
    $smarty->registerPlugin('function', 'test', 'test');

    $smarty->display('test.tpl');

test.tpl文件:

代码语言:javascript
复制
{test p1='abc' p2='123' name='tom'}

functions 函数插件

将写好的插件放入Smarty解压目录中的lib目录下的plugins目录里:functions

lib目录下的plugins目录下function.test.php文件:

代码语言:javascript
复制
<?php
    function smarty_function_test($params){
        $width = $params['width'];
        $height = $params['height'];

        $area = $width * $height;
        return $area;
    }

test.php文件:

代码语言:javascript
复制
 $smarty->display('area.tpl');

area.tpl文件:

代码语言:javascript
复制
{test width=150 height=200}

modifiers 修饰插件

将写好的插件放入Smarty解压目录中的lib目录下的plugins目录里:modifier

代码语言:javascript
复制
<?php
function smarty_modifier_test($utime, $format){
    return date($format, $utime);
}

test.php文件:

代码语言:javascript
复制
<?php
    require ('../smarty/Smarty.class.php');

    $smarty = new Smarty();

    //Smarty “自编口诀-五配置两方法”
    //五配置介绍
    $smarty -> left_delimiter = "{"; //左定界符
    $smarty -> right_delimiter = "}"; //右定界符
    $smarty -> template_dir = "tpl"; //html模板的地址
    $smarty -> compile_dir  = "template_c"; //模板编译生成的文件
    $smarty -> cache_dir = "cache"; //缓存

    $smarty ->assign('time',time());

    $smarty->display('datetime.tpl');

datetime文件:

代码语言:javascript
复制
{$time|test:'Y-m-d H:i:s'}

block functions 区块函数插件

将写好的插件放入Smarty解压目录中的lib目录下的plugins目录里:block

代码语言:javascript
复制
<?php
function smarty_block_teststr($parmas, $content){
    $replace = $parmas['replace'];
    $maxnum = $parmas['maxnum'];
    if($replace == 'true'){
        $content = str_replace(',',',', $content);
        $content = str_replace('。','.', $content);
    }
    $content = substr($content, 0 ,$maxnum);

    return $content;
}

test.php文件:

代码语言:javascript
复制
require ('../smarty/Smarty.class.php');

    $smarty = new Smarty();

    //Smarty “自编口诀-五配置两方法”
    //五配置介绍
    $smarty -> left_delimiter = "{"; //左定界符
    $smarty -> right_delimiter = "}"; //右定界符
    $smarty -> template_dir = "tpl"; //html模板的地址
    $smarty -> compile_dir  = "template_c"; //模板编译生成的文件
    $smarty -> cache_dir = "cache"; //缓存

   $str = 'Hello,, my name is HanMeimei。 How are you?';

   $smarty->assign('str',$str);
   $smarty->display('content.tpl');

content文件:

代码语言:javascript
复制
{teststr replace='true' maxnum=29}
{$str}
{/teststr}

本文链接:https://cloud.tencent.com/developer/article/1558018

本文采用CC BY-NC-SA 3.0 Unported协议进行许可,转载请保留此文章链接

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Samrty的插件?
  • Smarty插件的常用类型
  • 如何制作和使用插件
    • 使用registerPlugin方法注册写好的自定义函数:
      • functions 函数插件
        • modifiers 修饰插件
          • block functions 区块函数插件
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档